D2.1 ´
Etat de l’art sur les supports d’excution pour environnements petascales
Chapter 2
´
Etat de l’art
Il s’agit d’´etudier les principes fondamentaux des runtimes, leur architecture, d’extraire leurs composants,
d’´etudier l’impl´ementation de ces derniers et leur syst`eme de communication. Cet ´etat de l’art doit
produire une sorte de sp´ecification des principes et des m´ecanismes utilis´es dans les runtimes pour les
applications parall`eles. On ´etudiera particuli`erement ces principes et ces m´ecanismes sous l’angle de
l’extensibilit´e et de la tol´erance aux d´efaillances.
Les runtimes actuels n’ont pas tous la mˆeme port´ee. Certains s’attachent `a r´epartir la charge de
travail sur l’ensemble des processeurs d’une mˆeme machine, c’est ce qu’on appelle ici les environnements
parall`eles. D’autres sont plus orient´es sur le d´eploiement sur des machines distantes, appel´es ici envri-
onnements distribu´es. Un derni`ere cat´egorie s’attaquent aux deux fronts par combinaison de techniques
ici nomm´es environnements hybrides.
2.1 Environnements parall`eles
Avec l’expansion des processeurs multicœurs, il est de premi`ere importance de savoir extraire un max-
imum de parall´elisme (parall´elisme `a grain fin) d’une application de mani`ere `a utiliser efficacement
l’ensemble les processeurs.
2.1.1 OpenMP
Le standard OpenMP [38] d´efinit un ensemble d’annotations pour la parall´elisation de programmes
s´equentiels. L’annotation de certaines portions de code ´ecrites de mani`ere s´equentielle g´en`ere des sous-
tˆaches qui vont alors pouvoir s’ex´ecuter en parall`ele sur la machine `a travers l’utilisation de threads. C’est
ce qu’on appelle une approche Fork/Join : le processus invocant la section parall`ele cr´ee les threads (fork)
et attent leur terminaision avant de continuer son ex´ecution (join). L’illustration typique porte sur la
parall´elisation d’une boucle (voir Figure 2.1): en l’annotant, les it´erations du corps de boucle vont ˆetre
r´eparties et ex´ecut´ees par diff´erents threads. Le nombre de threads maximum est fix´e par l’utilisateur
grˆace une variable d’environnement.
Plusieurs impl´ementations de ce standard sont propos´ees comme GOMP [23] de GNU, Sun Studio
Compiler [47] de Sun Microsystems, OpenMP PGI Compiler [41]. Question scalabilit´e, les performances
de chacune de ces impl´ementations sont principalement d´ependantes de celles des biblioth`eques de threads
sur lesquelles elles reposent. [Le syst`eme de threads de GNU/Linux est scalable car il fait attention `a
la localit´e de ses threads : chaque processeur cr´ee les threads g´en´er´es par ce qu’il ex´ecute et les placent
en local, l’ordonnancement est fait `a partir de cette mˆeme file en local avant d’aller plus loin dans la
machine et faire du vol de travail. Il n’y a pas de syst`eme centralis´e.] En g´en´eral, chaque impl´ementation
d’OpenMP d´eveloppe sa propre biblioth`eque de threads de niveau utilisateur de mani`ere `a garder le
contrˆole sur l’ordonnancement qui est fait. Les plus “intelligents” utilisent le principe de vol de travail
comme celui fait dans GNU/Linux. Par contre, la plupart ne prenne pas en compte des param`etres
ANR SPADES. 08-ANR-SEGI-025 Page 5