Téléchargez l'application
Tom's Hardware sur l'App Store
Toute l'actu informatique de référence sur votre iPhone
Oui Non

Apple met Grand Central en open source

par - source: MacOS Forge

Une des nouveautés de Mac OS X Snow Leopard, c'est Grand Central Dispatch. Ce système permet, en simplifiant un peu, de rendre le développement d'applications multi-thread plus simple. En effet, Grand Central Dispatch permet aux programmeurs de se passer d'une partie des problèmes du multithread : la distribution de ceux-ci (entrent les cores) et la gestion de ceux-ci. L'idée consiste à laisser le système d'exploitation gérer les threads, en laissant le programmeur créer ce dont il a besoin. Et Apple propose les sources de la librairie utilisée pour Grand Central Dispatch, en expliquant que c'est intéressant pour les développeurs, mais aussi pour une implémentation dans d'autres systèmes (on pense évidemment à Linux). Notons que l'ensemble est sous licence Apache 2.0, ce qui indique que la modification et la distribution sont autorisées pour tous les suages (libres et commerciaux) mais que le copyright est maintenu.

Typiquement, un exemple simple existe pour montrer l'avantage de Grand Central : si un programme lance plusieurs encodages vidéo sur un processeur à deux cores, un système classique va traiter tous les threads en même temps et donc passer d'un thread à un autre. Avec trois encodages, on aurait par exemple six threads simultanément, deux par encodage, qui se télescoperaient. Avec Grand Central, le système détecte ce type de situation et va séparer les threads : l'encodage se ferra donc d'abord sur le premier fichier (avec deux threads), puis le second puis le troisième. Cette technique permet de limiter le blocage des threads et donc de gagner un peu de temps processeur pour d'autres tâches (dans ce cas précis, pour encoder plus vite) tout en évitant de saturer les autres ressources de la machine. Notons bien évidemment que la technologie n'est pas « magique » mais qu'elle peut aider les développeurs en simplifiant le code multithread, même si un bon code bien pensé est souvent aussi efficace.

Partager:
9
Commentaires
X
Valider

Commentaires
Ajouter un commentaire
Mictateur 11/09/2009 17:01
Masquer
-2+

Beau geste, mais je reste sceptique.
Concrètement, à part prendre de la place sur le disque dur, ça sert à quoi ? Y'a quelqu'un qui utilise ? :sweat:
Et Linux a pas d'équivalent ?

dandu 11/09/2009 17:11
Masquer
-5+

pour le moment, y a que Snow Leopard qui l'a et peu de programmes l'utilisent (voire pas, en fait). Actuellement, ça sert un peu chez Apple, mais c'est mineure, parce que faut réécrire pour vraiment en tirer parti.

magellan 11/09/2009 17:45
Masquer
-2+

En tout cas, vu la technologie décrite, je pense que le fait d'ouvrir au monde entier ce procédé a deux buts majeurs:
- Démontrer que Apple sait s'ouvrir au monde
- Inciter par conséquent les développeurs à lorgner sur l'Os à la pomme.

Pour moi, c'est un excellent choix stratégique, surtout quand on voit la difficulté à développer des applications capables de s'appliquer à plusieurs processeurs. Et puis, n'oublions pas que les architectures Apple sont quand même très maîtrisées, puisque le hardware est défini par les modèles de la gamme (et non par les X possibilités de configuration pour les Pc). Cela a pour conséquence que si Apple tend la main aux développeurs pour qu'ils tiennent compte du multi coeur, alors les applications tierces n'en seront que plus performantes.

Bon... étant développeur, j'émets le bémol classique du: si c'est automatique, c'est pas forcément optimisé. Mais franchement entre un "démerde toi, à toi de réflechir", et un "tiens, ça sait faire ça, et pas trop mal", je sais quoi choisir;)

solendil 11/09/2009 21:05
Masquer
-1+

L'avantage de Grand Central est d'optimiser les threads au niveau OS, et non pas applicatif. Une application multi-thread ne devrait pas avoir à gérer le nombre de CPUs logiques ou physiques de la machine, ne devrait pas avoir à se demander si elle est seule à tourner ou que d'autres grosses applis lui disputent le CPU, etc... Le principe de Grand Central est que l'appli donne des tâches à l'OS et que celui-ci les répartit en fonction des ressources. Les applications sont donc incitées à faire du super-multi-threading et à passer tous ces milliers de threads potentiels à GC qui les exécutera en parallèle ou en série selon le contexte.

Problème de Grand Central, il est lié à une extension du C/C++/ObjectiveC que Apple vient de sortir (closures) et qui n'est probablement pas prête d'être largement adoptée. A moins que Apple ait intefacé Grand Central avec d'autres systèmes de gestion de threads?

lologagny 12/09/2009 11:38
Masquer
-0+

...Il me semble que le nbr de treads et processus sont indépendants du nbr de cpu depuis ...15-20 ans (ncr,as400...)?

1815 12/09/2009 13:08
Masquer
--1+

hé ho ! c'est fini les vacances...
il est passé où, Le Ventripotent Moqueur ?
encore sur une plage avec son compère vardon? devant un cocktail (cidre + jus de pomme) à profiter du fruit de leur actions apple labeur?

même sur les sujets à troll on ça réagit plus... ça fait bizarre.

ultrabill 13/09/2009 18:43
Masquer
-0+

Citation :

hé ho ! c'est fini les vacances...
il est passé où, Le Ventripotent Moqueur ?
encore sur une plage avec son compère vardon? devant un cocktail (cidre + jus de pomme) à profiter du fruit de leur actions apple labeur?

même sur les sujets à troll on ça réagit plus... ça fait bizarre.


Ca va assainir un peu le forum :)
Par contre je flippe pour un truc : "un de perdu, dix de retrouvés" [:peur]

pluies 14/09/2009 09:45
Masquer
-0+

Mictateur :
Beau geste, mais je reste sceptique.Concrètement, à part prendre de la place sur le disque dur, ça sert à quoi ? Y'a quelqu'un qui utilise ? Et Linux a pas d'équivalent ?


Pour beaucoup plus d'infos qu'ici, direction la revue en détail d'Ars Technica (pages 11, 12 et 13). ;)

Et vu comment ils décrivent la technologie, ça a l'air très très très intéressant. Cé résout pas les problèmes profonds du multithreading (mémoires partagées, race conditions, deadlock...), mais ça permet au développeur de dire "je veux que ça, ça et ça ça tourne en parallèle", puis le système se démerde pour tirer tout le jus de la machine. En pratique, le nombre de threads d'un programme n'est plus statique, mais géré par Grand Central. Du coup, un programme n'a pas à être réécrit pour être parallélisé à un grand nombre de processeurs (du moment qu'on lui spécifie bien qu'il tourner sur "jusqu'à n processeurs"), et inversement ne plombe pas le système en lançant un nombre de threads bien supérieur au nombre de processeurs.

Enfin c'est ce que j'en ai compris jusque là, et ça m'a l'air vraiment intéressant, concis et bien implémenté. Apple espère donc que Linux (ou *BSD, ou OpenSolaris) en profite pour l'implémenter : plus de gens sur un bon projet, ça fait un meilleur projet. Et si le monde de l'open source peut en profiter, c'est encore mieux (à la fois pour l'image de marque et pour le côté "open-source friendly" d'Apple).

Et une boite qui dirige bien un projet open source, ça peut donner de trèèès bons résultats (avis philosophique personnel ça par contre :p).

Du côté de la concurrence, j'ai cru comprendre que OpenMP est un peu pareil mais en fait non. Faudra que je me renseigne là dessus.

Mictateur 14/09/2009 10:29
Masquer
-0+

Citation :

Par contre je flippe pour un truc : "un de perdu, dix de retrouvés" [:peur]



D'après Goldman : C'EST PAS VRAI !!! :o

Publicité

Les offres du moment

Newsletters


OK