• Aucun résultat trouvé

Nous avons pr´esent´e dans ce chapitre l’architecture d’une pile logicielle adapt´ee aux plates-formes mat´erielles modernes et aux mod`eles de programmation m´elangeant communication et multi-threading. Cette architecture logicielle repose sur les interactions entre la biblioth`eque de communication et l’or-donnanceur de threads. La gestion de ces interactions est laiss´ee `a un module logiciel d´edi´e au multi-threading dans les communications. Nous avons montr´e les possibilit´es offertes par ce module de

d´etec-tion des ´ev´enements, notamment comment les probl`emes de r´eactivit´e aux communications et la pro-gression des communication en arri`ere-plan pouvaient ˆetre g´er´es.

Nous avons ´egalement ´etudi´e le support des applications multi-thread´ees et propos´e plusieurs m´ecanismes de protection adapt´es aux diff´erents types d’applications. Le support des applications multi-thread´ees ne se r´esume pas `a des m´ecanismes de protection : nous avons analys´e l’impl´ementation des primitives d’attente fournies par les biblioth`eques de communication. `A partir de cette ´etude, nous avons propos´e un m´ecanisme d’attente mixte permettant de faire progresser les calculs de l’application tout en limitant les surcoˆuts li´es aux changements de contexte.

Enfin, nous avons pr´esent´e un gestionnaire de tˆaches adapt´e aux biblioth`eques de communication. Ce m´ecanisme offre la possibilit´e de traiter les tˆaches de communication en parall`ele et d’exploiter les cœurs inutilis´es. Nous avons montr´e comment ce gestionnaire de tˆaches peut ˆetre utilis´e pour am´eliorer le recouvrement des communications par du calcul et pour r´eduire le coˆut des communications en exploiter plusieurs r´eseaux simultan´ement.

67 proposons est conc¸u pour g´erer les diff´erentes probl´ematiques pos´ees par les mod`eles de programmation modernes. Si les notions pr´esent´ees ici peuvent ˆetre mises en œuvre de mani`ere relativement simple, l’optimisation des performances n´ecessite la mise au point de quelques m´ecanismes que nous d´etaillons dans le chapitre suivant.

Chapitre 6

´

Elements d’impl´ementation : le

gestionnaire d’´ev´enements PIOM

AN

et

son utilisation dans N

EW

M

ADELEINE

Sommaire

6.1 La suite logicielle PM2. . . . 70 6.1.1 La biblioth`eque de communication NEWMADELEINE . . . . 70 6.1.2 La biblioth`eque de threads MARCEL. . . . 72 6.2 Le gestionnaire d’entr´ees/sorties PIOMAN . . . . 73 6.2.1 Collaboration avec MARCEL . . . . 73 6.2.2 Interface de d´etection des ´ev´enements . . . . 75 6.2.3 M´ecanisme d’exportation de tˆaches . . . . 78 6.3 NEWMADELEINE: une biblioth`eque de communication multi-thread´ee . . . . . 78 6.3.1 Progression des communications dans NEWMADELEINE . . . . 78 6.3.2 Gestion des acc`es concurrents . . . . 79 6.3.3 Traitement des communications en parall`ele . . . . 80 6.4 MPICH2/NEWMADELEINE . . . . 82 6.4.1 Architecture g´en´erale de MPICH2-NEMESIS . . . . 82 6.4.2 Int´egration de NEWMADELEINEdans MPICH2 . . . . 84 6.4.3 D´etection des ´ev´enements d’entr´ees/sorties . . . . 84 6.5 Bilan de l’impl´ementation . . . . 85

Nous pr´esentons dans ce chapitre l’impl´ementation des concepts propos´es dans le chapitre pr´ec´edent. La majorit´e du d´eveloppement a ´et´e conduite dans la suite logicielle PM2. Nous commenc¸ons donc par d´ecrire bri`evement cette suite logicielle et ses diff´erents modules logiciels. Nous pr´esentons ensuite PIOMAN, le gestionnaire d’entr´ees/sorties qui impl´emente le m´ecanisme de d´etection des ´ev´enements et le syst`eme de tˆaches l´eg`eres. La biblioth`eque de communication NEWMADELEINEest ensuite d´etaill´ee, notamment la partie en charge du multi-threading. Enfin, nous pr´esentons MPICH2/NEWMADELEINE, l’impl´ementation MPICH2 se basant sur NEWMADELEINEpour g´erer les communications.

70 CHAPITRE 6. ´EL ´EMENTS D’IMPL ´EMENTATION Myri−10g Quadrics IB ... Mad−MPI Gestionnaire PIOMan threads Bibliothèque de Marcel d’entrée/sortie BubbleSched Matériel Support d’exécution Suite PM2 x86 IA64 PowerPC ... ForestGOMP PadicoTM PThread MPICH2 communication Bibliothèque de NewMadeleine

FIGURE6.1 – Suite logicielle PM2.

6.1 La suite logicielle PM

2

Une grande partie du d´eveloppement r´ealis´e au cours de cette th`ese l’a ´et´e au sein de la suite logicielle PM2[NM95a]. L’environnement de programmation PM2 a initialement ´et´e conc¸u au LIFL de Lille et s’est poursuivi `a l’ ´Ecole normale sup´erieure de Lyon. Il s’agissait `a l’origine d’un environnement de pro-grammation distribu´e fond´e sur le paradigme LRPC (Lightweight Remote Procedure Call) s’appuyant sur l’ordonnanceur de threads de niveau utilisateur MARCEL[NM95b] et la biblioth`eque de communi-cation MADELEINE[BNM98]. Si les notions sur lesquelles se base PM2n’ont pas chang´e, la paradigme LRPC est aujourd’hui remplac´e par une approche bas´ee sur le passage de messages. Pour cela, PM2 s’appuie sur la biblioth`eque de communication NEWMADELEINE [Bru08a] et sur la biblioth`eque de threads de niveau utilisateur MARCEL[mar07]. Comme l’illustre la Figure 6.1, ces deux biblioth`eques interagissent par le biais du gestionnaire d’entr´ees/sorties PIOMAN.

Le d´eveloppement effectu´e au cours de cette th`ese a principalement port´e sur l’impl´ementation de PIO-MANet sur la partie de NEWMADELEINEg´erant le multi-threading. Nous pr´esentons dans cette section la biblioth`eque de communication NEWMADELEINEet la biblioth`eque de threads MARCEL.

6.1.1 La biblioth`eque de communication NEWMADELEINE

NEWMADELEINEest une biblioth`eque de communication pour r´eseaux hautes performances d´evelopp´ee au cours de la th`ese d’ ´Elisabeth Brunet [Bru08b]. NEWMADELEINEest capable d’exploiter efficacement la plupart des technologies r´eseau modernes (MYRINET, INFINIBAND, QSNET, TCP, etc.) et supporte l’utilisation simultan´ee de plusieurs technologies r´eseau diff´erentes (multirail h´et´erog`ene) [ABMN07]. Contrairement aux biblioth`eques de communication classiques, NEWMADELEINEapplique dynamique-ment des strat´egies d’ordonnancedynamique-ment et d’optimisation. Diff´erentes strat´egies d’optimisation (agr´egation de messages, r´epartition des messages sur plusieurs r´eseaux, etc.) sont d´efinies et peuvent agir en fonc-tion de l’´etat des cartes r´eseaux. En effet, NEWMADELEINE base son activit´e sur celle des cartes r´eseaux : lorsque ces derni`eres sont occup´ees `a transmettre des donn´ees, les messages d´epos´es par

6.1. LA SUITE LOGICIELLE PM2 71 ... Carte Quadrics Carte Myrinet ... ... ... ORDONNANCEUR Couche de transfert Réseau Application NewMadeleine Paquets en attente

Pilote NMad/MX Pilote NMad/Elan

Couche d’optimisation Couche de collecte

Paquets en cours de transmission

FIGURE6.2 – Architecture de la biblioth`eque de communication NEWMADELEINE.

l’application sont accumul´es. Lorsque les cartes r´eseau sont inutilis´ees, NEWMADELEINEinvoque une strat´egie d’optimisation et g´en`ere un paquet `a transmettre par le r´eseau. NEWMADELEINEprofite donc des moments pendant lesquels les cartes r´eseau sont occup´ees pour accumuler des messages de l’ap-plication et ainsi avoir un large choix d’optimisations. Comme l’illustre la Figure 6.2, l’architecture de NEWMADELEINEcomporte 3 couches :

La couche de collecte. Les messages que l’application soumet `a la biblioth`eque de communica-tion sont accumul´es dans la couche de collecte. Les informacommunica-tions permettant d’identifier les messages (num´ero de s´equence, num´ero de tag, etc.) sont alors ajout´ees aux informations concernant le message (adresse des donn´ees, taille du message, exp´editeur ou destinataire, etc.) La requˆete ainsi form´ee est alors stock´ee dans une des listes de requˆetes.

La couche d’optimisation. Lorsqu’une carte r´eseau devient libre, les diff´erentes strat´egies d’optimisa-tion examinent les listes de requˆetes de la couche de collecte et forment un paquet optimis´e `a soumettre au r´eseau. Les messages provenant de plusieurs flux de communication peuvent alors ˆetre combin´es pour former un mˆeme paquet. Le paquet g´en´er´e est une combinaison d’une ou plusieurs requˆetes vers une mˆeme destination. La couche d’optimisation est ´egalement en charge de la gestion des protocoles n´ecessaires au bon fonctionnement des communications (cr´eation des messages de contrˆole du

rendez-vouspar exemple).

La couche de transfert. Chaque technologie r´eseau support´ee est exploit´ee grˆace `a un pilote sp´ecifique dans la couche de transfert. Ce pilote fournit aux couches sup´erieures de NEWMADELEINE des fonc-tions permettant de soumettre une requˆete au r´eseau, de v´erifier la terminaison d’une requˆete, etc. Les pilotes exposent ´egalement des informations sur les capacit´es des r´eseaux. Ces indications peuvent por-ter sur la nature des ´echanges (en flux, par message, etc.), sur la capacit´e du r´eseau `a traipor-ter des blocs de donn´ees ´epars en m´emoire, etc.

NEWMADELEINE dispose ´egalement d’un m´ecanisme d’´echantillonnage qui permet d’´evaluer les per-formances r´eelles d’un r´eseau. `A l’initialisation de l’application, les diff´erents r´eseaux et leurs m´ethodes de transfert sont ´evalu´es et les performances obtenues sont stock´ees en m´emoire. Ainsi, lorsqu’un paquet

72 CHAPITRE 6. ´EL ´EMENTS D’IMPL ´EMENTATION VP VP CPU CPU Espace utilisateur Espace noyau Ordonnanceur Système Ordonnanceur Marcel

FIGURE6.3 – Ordonnanceur de threads de niveau utilisateur.

de donn´ees doit ˆetre envoy´e par un r´eseau, NEWMADELEINEpeut consulter les performances mesur´ees et estimer le temps que prendra le transfert r´eseau. Les strat´egies d’optimisation de NEWMADELEINE

peuvent ainsi adapter leur comportement aux caract´eristiques de la machine.

6.1.2 La biblioth`eque de threads MARCEL

La biblioth`eque de threads MARCEL [NM95b] a initialement ´et´e conc¸ue par Raymond Namyst pour l’environnement de programmation distribu´e PM2. MARCELpropose un m´ecanisme de threads de ni-veau utilisateur. Ces threads sont des entit´es propres `a MARCELet l’ordonnanceur de threads du syst`eme d’exploitation n’en a pas connaissance. MARCEL fait des appels `asetjmp et longjmp pour g´erer les changements de contexte entre les threads MARCEL, ce qui permet d’obtenir de tr`es bonnes perfor-mances en comparaison avec le coˆut des changements de contexte entre des threads noyau. De plus, MARCELfournit une interface unifi´ee pour exploiter des machines multi-processeurs vari´ees en terme de syst`emes (notamment GNU/Linux, BSD, AIX, Irix et OSF) ou d’architectures (notamment x86, x86 64, Itanium, PowerPC, Alpha, Mips ou Sparc).

Pour exploiter les machines multi-cœurs, MARCEL utilise le concept de Processeur Virtuel (Virtual

Processorou VP) illustr´e par la Figure 6.3. Pour chaque processeur disponible, MARCELcr´ee un thread de niveau noyau (LightWeight Process ou LWP) et le fixe sur un processeur. Ce thread noyau devient alors un Processeur Virtuel sur lequel peuvent s’ex´ecuter plusieurs threads de niveau utilisateur. Ainsi, l’ordonnancement des threads est enti`erement r´ealis´e en espace utilisateur, ce qui permet de maˆıtriser totalement l’ex´ecution des threads sans interaction avec le syst`eme d’exploitation.

Au cours de sa th`ese, Samuel Thibault a propos´e et impl´ement´e l’interface de programmation BUB

-BLESCHED [Thi07]. La notion de bulle a permis d’exprimer la nature structur´ee du parall´elisme : les threads sont regroup´es dans des bulles en fonction de leurs affinit´es et une hi´erarchie de threads est ainsi cr´e´ee. L’ordonnanceur tente alors de placer les threads d’une bulle sur des processeurs proches afin de b´en´eficier d’effets de cache ou de pouvoir placer les donn´ees sur lesquelles travaillent les threads

6.2. LE GESTIONNAIRE D’ENTR ´EES/SORTIES PIOMAN 73 sur un nœud NUMA proche. L’interface BUBBLESCHEDpropose ´egalement des outils permettant de d´evelopper des ordonnanceurs d´edi´es, efficaces et portables.

Le support OPENMP du compilateur GCC, GOMP, a ´et´e ´etendu pour utiliser BUBBLESCHED. Cette extension, nomm´ee FORESTGOMP [BDT+08] et d´evelopp´ee au cours de la th`ese de Franc¸ois Bro-quedis, permet d’exprimer la nature hi´erarchique des sections parall`eles imbriqu´ees grˆace aux bulles. MARCELpropose ´egalement une couche de compatibilit´e POSIX afin de b´en´eficier des performances des ordonnanceurs `a bulles pour une large gamme d’applications.