Suivez-nous

Système

Les “blocks” débarquent dans Clang

neilime

Publié le

 

Par

Si d ‘un côté Apple c’est l’iPod ou iTunes, de l’autre c’est aussi des ingénieurs très pointus qui participent à l’évolution de l’informatique. Chris Lattner par exemple travaille chez Apple depuis plusieurs années sur les LLVM, une machine virtuelle de bas niveau (voir la chronique du 8 juin 2007) et sur Clang un outil qui a pour but d’améliorer les premières étapes de la compilation d’un programme. Il s’agit de bâtir autour du compilateur GCC utilisé jusque là un infrastructure permettant d’optimiser au maximum la compilation.

Une compilation se déroule en effet en plusieurs parties que les ingénieurs cherchent à optimiser pour tirer le meilleur parti des processeurs disponible. Particularité du moment, les processeurs n’augmentent plus réellement en terme de fréquence d’horloge, par contre le nombre de cœurs se multiplie et il semblerait que cela ne fasse que commencer.

Pour optimiser l’adaptation d’un compilateur au processeur qui fera tourner le logiciel, l’ingénieur d’Apple dirige par exemple une équipe chargée d’améliorer la manière dont sera traitée un code source par les analyseurs (lexical, syntaxique et sémantique) du compilateur. Et la solution théorique est évidemment toute trouvée : pour accélérer le traitement du programme, il faut fournir au processeur à plusieurs cœurs, un code en plusieurs morceaux pour que celui-ci n’ait plus qu’à se charger de répartir la tâche sur les cœurs.

C’est le principe des blocs de traitement qui existent déjà en partie dans le langage Python par exemple et qui permettent par exemple de séparer chaque itération d’une boucle en une unité de travail. Les unités devant ensuite être traitées en parallèle par les cœurs du processeur au lieu d’attendre qu’un seul cœur reçoivent la boucle à traiter et s’occupe de chaque itération l’une après l’autre. Pour permettre cette division du travail, chaque unité de travail possédera alors ses propres données dans sa pile.

Le site MacResearch.org propose une explication par la démonstration de ces blocs avec un exemple en Python suivi d’un exemple dans le langage utilisé pour la majorité des application Mac OS X, l’Objective-C.

Pour les amateurs, c’est par ici

Clang sur Wikipedia

MàJ : Tout n’est pas aussi simple que présenté et il semble que MacResearch ait aussi commis sont lot d’imprécisions. Nous reviendrons rapidement sur le sujet.