Journal Grand Central sous licence apache

Posté par (page perso) .
Tags : aucun
13
11
sept.
2009
L'information n'a pas encore été relayée sur DLFP et je me permet de poster un journal (mon premier, émotion émotion).

Grand Central, un mécanisme déployé par Apple dans Mac OS 10.6, répondant également au doux nom de Snow Leopard, a été passé sous une licence Apache 2.0.

Les sources sont d'ores et déjà disponibles en ligne dans un dépôt Git et subversion .

Pour être tout à fait précis, c'est en fait la librairie, libdispatch [1], qui implémente Grand Central dans l'espace utilisateur dont les sources sont disponibles sous licence Apache 2.0.
L'implémentation coté noyau semble être disponible sur la page du projet xnu [2] (je n'ai pas cherché je me suis perdu dans leur machin :o| )

Pour ceux auxquels les lignes précédentes ne parlent pas, Grand Central est un des éléments essentiels autour duquel s'articule la toute dernière version du système d'exploitation d'Apple.

L'objectif de cet outil, destiné aux développeurs, est de les décharger d'un partie de la gestion des threads en confiant cette tâche au système d'exploitation. Grand Central étend la syntaxe des langages C, C++ et Objective-C afin de permettre au programmeur de se consacrer à l'écriture du programme en le découpant en tâches qui pourront être automatiquement exécutées en parallèle par le système d'exploitation.

Je ne suis pas un expert et j'ai une connaissance vraiment limitée de cette chose, mais Wikipedia (en) propose un article correct à ce sujet [3].

[1] : http://libdispatch.macosforge.org/
[2] : http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/
[3] : http://en.wikipedia.org/wiki/Grand_Central_Dispatch

Mes excuses par avances pour les (trop nombreuses) fautes d'orthographes et les (au moins aussi nombreuses) imprécisions techniques, corrections et autres critiques constructives évidement bienvenues :)
Une question me vient cependant : un implémentation de Grand Central pour le noyau Linux (ceci est une déclaration trollproof) aurait-elle un intérêt et ne ferai-elle pas double emploi avec l'ordonnanceur ?
  • # La dépêche est en attente

    Posté par . Évalué à 5.

    J'ai posté une dépêche, il y a un peu plus d'une demi-heure. Quelques précisions :
    * En fait, libdispatch est "auto-suffisante", la partie implémentée dans Xnu permet d'optimiser la gestion des threads.
    * GCD n'étends pas la syntaxe des langages de la famille C mais s'appuie sur une extension les blocs (une implémentation des closures, notion importée du Lisp). D'ailleurs C++0x offre un concept proche avec les expressions lambdas.
    http://en.wikipedia.org/wiki/Closure_%28computer_science%29

    GCD est un framework de programmation concurrente intéressant, moins moche qu'OpenMP, moins compliqué que TBB (l'absence des lambdas joue pas mal dans cette "complexité") limité au C++, j'espère vivement que GCC se dépêche de nous proposer les blocs afin d'en profiter, libdispatch devrait pas être difficile à porter, LLVM étant disponibles dans toutes les bonnes distributions.
    • [^] # Re: La dépêche est en attente

      Posté par . Évalué à 5.

      j'espère vivement que GCC se dépêche de nous proposer les blocs afin d'en profiter, libdispatch devrait pas être difficile à porter, LLVM étant disponibles dans toutes les bonnes distributions.

      D'apres la review de 10.6 sur arstechnica, les blocs sont dispos avec llvm-gcc, llvm-clang et gcc. Donc le patch pour le support des blocs dasn gcc doit exister.

      Sinon j'ai vu quelques benchs, et visiblement libdispatch perd beaucoup quand on utilise les blocs (par rapport à utiliser des pointeurs de fonctions), notamment à cause des opération de copie mémoire.
    • [^] # Re: La dépêche est en attente

      Posté par (page perso) . Évalué à 4.

      > moins moche qu'OpenMP

      wouhou bon debarras, personne ne regrettera ce truc, et merci à Steve Jobs de nous offrir Grand Central !
      • [^] # Re: La dépêche est en attente

        Posté par . Évalué à -3.

        J'aurais préféré que libdispatch soit sous licence LGPL parce que moi et les licences permissives qui protègent les brevets logiciels...
      • [^] # Re: La dépêche est en attente

        Posté par . Évalué à 3.

        personne ne regrettera ce truc

        J'attends de voir, très honnêtement. Parce que tout de même, OpenMP n'existe pas que pour C++ et C, mais aussi (et surtout ? :) ) pour Fortran. gfortran va-t-il profiter de Grand Central ? Je ne crois pas ... :)
    • [^] # Re: La dépêche est en attente

      Posté par (page perso) . Évalué à 2.

      et elle n'aura pas attendu si longtemps à être publiée :-)
      http://linuxfr.org/2009/09/11/25894.html Apple libère Grand Central Dispatch
  • # Ce dont il s'agit (les workers threads sans effort)

    Posté par . Évalué à 7.

    Pour ceux qui se demandent de quoi parle ce journal : Grand Central Dispatch (combiné avec les "blocks") est une solution mise en place par Apple dans le tout récent Mac OS X 10.6 "Snow Leopard" pour rendre la programmation threadée/concurente/asynchrone/parallèle hyper simple.

    L'article d'Ars Technica sur les nouveautés de Snow Leopart décrit les choses de façon synthétique mais agréable à lire :

    # Les "blocks" (ajout du support des closures/fonctions anonymes aux langages C, C++ et Objective-C)
    http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.a(...)

    # Grand Central Dispatch
    http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.a(...)

    # Adapter du code existant pour en tirer partis
    http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.a(...)

    En gros, l'adaptation d'un bout de code pour en faire une "worker thread" devient tellement simple et naturelle (pour ainsi dire, deux ou trois lignes claires à ajouter) que les développeurs vont le faire, et qu'on vas peut-être enfin exploiter partie de nos cpus multicores ;).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.