Multithreading et Calcul Haute Performance


This presentation covers the benefits and challenges of multithreading, distributed multithreading, and various environments. The focus is on technological context and new architectures such as processors and networks.
- Uploaded on | 5 Views
-
lilian
About Multithreading et Calcul Haute Performance
PowerPoint presentation about 'Multithreading et Calcul Haute Performance'. This presentation describes the topic on This presentation covers the benefits and challenges of multithreading, distributed multithreading, and various environments. The focus is on technological context and new architectures such as processors and networks.. The key topics included in this slideshow are . Download this presentation absolutely free.
Presentation Transcript
1. Multithreading et Calcul Haute Performance J-F. Mhaut , R. Namyst INRIA, ReMaP, LIP, ENS Lyon
2. Au menu u Introduction : contexte technologique Nouvelles archis: processeurs, rseaux, etc. u Multithreading : quels intrts? Dfinition, premiers contacts, partage mmoire u Pause (10) u Multithreading distribu Intrts et difficults Quelques environnements Lenvironnement PM2 u Conclusion
3. Introduction
4. Architecture processeur Cray-TERA 3 4 1 2 Applications Threads concurrents Streams i=1 i=2 i=3 i=n j=1 j=2 j=3 j=m G(A) F (a) F (b) Programme squentiel Pool dinstructions prtes Pipeline dinstructions en cours dexcution
5. Multi-threading Cray-TERA u Principe Maintenir plusieurs threads (streams) actifs (40 80 streams => 90% utilisation de la machine) Garantir une instruction prte chaque cycle processeur u Dispositif matriel supportant Gestion de plusieurs streams Changement de contexte tous les cycles (3ns) Jusqu 8 requtes daccs mmoire en attente pour un stream
6. Caractristiques du processeur Cray-TERA u Horloge 333 MHZ u Accs mmoire 2,8 Gbytes/seconde bande passante Emission/rception dun paquet par cycle Pas de cache de donnes, cache instr 2Mbytes u Multiprogrammation/concurrence 16 domaines de protection 128 streams (32 registres, 1 Program Counter)
7. Enjeux u Trouver le bon niveau de paralllisme Besoin de travail (threads) pour saturer la machine Quatre sources potentielles de paralllisme Applications (jobs) Threads Boucles ILP (Instruction-Level Parallelism) Compilateur/parallliseur u March restreint Une machine installe San Diego
8. Cluster computing u Architecture homogne, faiblement htrogne Grappes (Cluster, COW), machines // PC, stations de travail SCI, Myrinet, Giganet, MPC, ... Protocoles de communication BIP, SISCI, SciOS, VIA, TCP, UDP, ... Myrinet/BIP PC Commutateur
9. Motivations pour le haut-dbit u Performances des communications Atteindre le niveau de performance des machines parallles avec les quipements du march (PC ou station de travail) Minimiser la latence, maximiser le dbit u Thmatiques de recherche Matriel Commutateurs, cartes dinterface Commutations, routage Logiciel Interfaces de communication (AM, FM, BIP, ) Env. de programmation (MPI, PM2, Nexus,)
10. Myrinet u Objectifs Performances en communication quivalentes celles des supercomputers Quelques microsecondes en latence Atteindre le Gbps en bande passante u Caractristiques Carte dinterface programmable Protocole : carte dinterface et le host Utilis pour implmenter des environnements de programmation
11. Myrinet : Description technique Myrinet commutateur Host Carte dinterface Host Carte dinterface Myrinet commutateur Host Carte dinterface Host Carte dinterface Host Carte dinterface Host Carte dinterface Cble 2,6 Gbps full duplex Crossbar complet u Routage Statique la source (entte consomm progressivement) Wormhole
12. Myrinet : cartes dinterface u Matriel u 66MHz cpu (LANai) u 1 Mbyte SRAM u 3 DMA (lien entre, lien sortie, mmoire du host) u Interface au bus PCI u Logiciel u LANai Control Program (LCP) Lien Myrinet RISC Packet Interface DMA Controler DMA Controler PCI Bridge PCI Bridge PCI Bus LANai Memory Memory u Performance (BIP/Myrinet) u 6 microsecondes latence u 127 Mbytes/sec bande passante
13. SCI*(Scalable Coherent Interface) Rseau capacit dadressage Adressage des mmoires distantes Lecture/criture distante sans interruption du processeur distant Support matriel pour mmoire partage * Emmanuel Cecchet (Sirac, INRIA Rhne-Alpes)
14. SCI : caractristiques techniques Scalable Coherent Interface Matriel standard (PC, station Unix, ) Architecture en anneau et/ou commutateur Evolutif jusqu 64 Knuds Bande passante de 500 Mo/s (4 Gb/s) full-duplex Pas de cohrence sur PCI (bus dentres/sorties) * Emmanuel Cecchet (Sirac, INRIA Rhne-Alpes)
15. SCI : performances Latence : 2.5 s (criture de processus processus) Dbit : 70 Mo/s Verrou : < 10 s (fetch&add)
16. Comms : remarques prliminaires u Rgle des 80/80 80% des messages sont de taille infrieure 256 octets 80% du trafic provient de messages dune taille suprieure 8KB u Nouvelles approches Latence faible pour les petits messages Bande passante importante pour les gros messages Cot des protocoles traditionnels
17. Communications systme u Evolutions technologiques Cots logiciels des protocoles Protocole systme (TCP/UDP/IP) Rseaux 10 Mb Rseaux 100 Mb Rseaux Gb
18. Comm. en contexte utilisateur Processus Interface OS u Recherches acadmiques Active Messages (Berkeley) Illinois Fast Messages (Urbana) U-Net (Cornell) MPC (Paris6, Versailles) BIP (Lyon) u Interface de bas-niveau Cibles pour les supports dexcution u Standard industriel : VIA Participation des industriels Etendre le spectre des applications
19. VIA : Virtual Interface Architecture VI Consumer VI User Agent (libvia) Open, Connect, Map Memory Descriptor Read, Write VI-Capable NIC Sockets, MPI, Legacy, etc. Requests Completed VI VI C S S S C O M P R R R VI Doorbells Undetermined VI Kernel Agent ( Slow ) User-Level ( Fast ) Host NIC
20. Giganet : Cartes VIA Giganet : Cartes VIA TCP/IP TCP/IP Winsock API Winsock API Winsock API Winsock API Fast Fast NDIS NDIS VI API VI API Fastest Fastest Application Application Application Application Native VI Interface Native VI Interface With VIA 50 versus 7000 instructions
21. Commutateurs Cartes dinterface Administration du rseau cLAN pour Windows cLAN pour Linux
22. Supports dexcution parallle u Avantages pour les utilisateurs Abstractions de haut niveau Portabilit des applications Efficacit ! Support dexcution // Architectures parallles et distribues Systmes dexploitation Interface de programmation (API) Applications
23. Le multithreading : quel(s) intrt(s) ? Introduction et rappels
24. Rappel : les processus lourds u Caractristiques Entit active directement supporte par lOS Flot dexcution Espace dadressage priv Ressources systmes Excution squentielle u Cot de gestion lev Allocation des ressources Appels systmes
25. Processus lourds (bis) u Ressources kernel + donnes user processeur processeur processeur Noyau Processus Ordonnanceur Espace utilisateur Processus Processus
26. Threads : Motivations u Difficult de programmation Fil dexcution unique une seule chose la fois ! Partage de donnes laborieux u Performances Oprations de base coteuses Recouvrement des oprations dE/S difficiles
27. Simplicit de programmation u Objectif Mener plusieurs activits indpendantes au sein dun processus u Exemples Simulations Serveurs de fichiers Systmes dexploitation (!) u Seule solution (?) Automate tats finis implant la main (sauvegardes dtats)
28. Structure dun OS monolytique u Exemple Squence infinie doprations courtes Ordre et frquence des scrutations ? for (;;) { if(networkMsgIn()) getNetworkMsg(); if(kbdReady()) getKey(); if(diskBlockReady()) handleDiskBlock(); }
29. Systmes multiprogramms Excution indpendante des activits Concurrence entre les diffrents traitements for (;;) { wait for network msg; getNetworkMsg(); } for (;;) { wait for key stroke; getKey(); } for (;;) { wait for disk block; handleDiskBlock(); }
30. Processus serveur classique u Srialisation des requtes Pas de recouvrement des E/S Exploitation SMP dlicate Prise en compte de priorits ? OS OS client serveur
31. Sur lefficacit des E/S u Caractristiques du serveur de fichiers Tps de traitement dune requte = 15ms Tps supplmentaire pour laccs disque = 75ms (pour 1/3 des requtes) u Dbit sans/avec recouvrement des E/S Sans recouvrement 25 requtes/seconde Avec recouvrement 33.33 requtes/seconde (+33%)
32. Les processus lgers u Principe Dtacher flot dexcution et ressources u Introduits dans divers langages & systmes Programmation concurrente Recouvrement des E/S Exploitation des architectures SMP thread ressources
33. Caractristiques de base u Thread = pile + contexte u Partage de ressources Code, tas, : espace dadressage Fichiers ouverts Table des traitants de signaux u Oprations de base performantes Cration, destruction Synchronisation, commutation de contextes u Cration dun processus lger Adresse de fonction excuter + paramtres
34. Performance des threads u Oprations critiques Cration/destruction (gestion mmoire) Changement de contexte (temps-partag) Synchronisation (mode utilisateur) u Programme dvaluation Cration dune activit (processus, thread ) + synchronisation (terminaison de lactivit) OS/Processeur Processus Thread noyau Thread utilisateur PM2 Linux 2.2/PII 450 0.540 0.130 - 0.006 Solaris 2.7/PII 350 8.622 0.214 0.160 0.009
35. Repres historiques u Lanctre : les coroutines Entrelacement explicite des excutions Langages : Simula (67), Modula2 (82) Primitives cls : create + resume u Les threads dans les systmes Cthread (Mach) -> DecThread -> PThread (~90) Chorus, Solaris (87), winNT, IRIX, Linux, etc. u Les threads dans les langages Ada (83), Java, etc. C++ //, Eiffel //, etc.
36. Le multithreading : quel(s) intrt(s) ? Premier contact
37. Linterface POSIX-Threads u Interface de programmation standard pour Unix Portabilit des applications Solaris, IRIX, HP-UX, Linux, etc. u Fonctionnalits Cration/destruction de threads Synchronisation Ordonnancement, priorits Signaux Etc.
38. Exemple: cration Cration dun nouveau thread ventuels attributs dans la structure attr Excution de start_func avec le paramtre arg *pid est lidentificateur du thread cr int pthread_create( pthread_t * pid , pthread_attr_t * attr , void * (* start_func )(void *), void * arg );
39. Attente de fin dexcution Attente de la terminaison du thread pid Rcupration de son code de retour status On peut contourner ce mcanisme en dtachant les threads : int pthread_join( pthread_t pid , void ** status ); int pthread_detach( pthread_t pid );
40. Hello World! #include
41. Attributs u Ensemble fix de caractristiques Utilis linitialisation Threads, verrous, variables de condition, etc. u Threads Priorit Pile : taille, emplacement Dtach : oui/non Type dordonnancement u Verrous Inversion de priorits, rcursivit
42. Attributs : exemple #include
43. Exemple bis : pile manipuler avec prcaution ! Quelle taille de pile choisir ? Comment prvenir/dtecter les dbordements ? pthread_attr_t attr; pthread_attr_init (&attr); pthread_attr_setstacksize (&attr, 128*1024 ); pthread_create ( NULL , &attr, func, NULL );
44. Le standard OpenMP u Interface pour crire des applications multithreads portables (sur SMP) Directives de compilation (C, C++, Fortran) + routines Objectif = simplicit + portabilit Constructeurs + fabricants de logiciels + etc. u Modle de programmation Fork-Join Paralllisation des boucles (#pragma omp)
45. Le multithreading : quel(s) intrt(s) ? Partage mmoire efficace
46. Les threads et la mmoire u Chaque thread possde sa propre pile Variables locales prives ( visibilit) u Les threads partagent lespace dadressage Variables globales Tas (malloc) Variables locales (piles) galement ! u Intrt Communications par pointeurs ! Paralllisation de programmes squentiels aise ?
47. Problmes de rentrance u Exemple simple : int glob = 0; void *inc(void *arg) { int i; for(i=0; i<100; i++) glob++; } int main(void) { pthread_create (&t1, NULL , inc, NULL ); pthread_create (&t2, NULL , inc, NULL ); pthread_join (t1, NULL ); pthread_join (t2, NULL ); printf( glob = %d\n, glob); } Rsultat ?
48. Explication glob++ nest pas forcment une opration atomique Scnario dexcution concurrente par 2 threads : Mov @glob, $r1 ; charger Inc r1 ; incrmenter Mov $r1, @glob ; enregistrer Mov @glob, $r1 Inc r1 Mov @glob, $r1 Inc r1 Mov $r1, @glob Mov $r1, @glob Mov @glob, $r1 Inc r1 Mov @glob, $r1 Inc r1 Mov $r1, @glob Mov $r1, @glob
49. Outils pour la synchronisation u Exclusion mutuelle : les verrous u Synchronisations plus complexes : Variables de condition (cf moniteurs de Hoare) pthread_cond_wait pthread_cond_signal, pthread_cond_bcast int glob = 0; void *inc(void *arg) { for(i=0; i<100; i++) { pthread_mutex_lock(&mutex); glob++; pthread_mutex_unlock(&mutex); } }
50. Code rentrant u code demeurant correct lorsquil est excut simultanment par plusieurs threads u Exemples typiques Fonction nutilisant que des variables locales Code protg par un verrou u Quid du code que lon crit pas soi-mme ? Malloc, free, , la bibliothque standard Fonctions MT-safe Option D_REENTRANT Certains prototypes changent
51. Importance de la synchro. u Cohrence squentielle de la mmoire ? Compilateurs/Optimiseurs Instructions rordonnes Processeurs modernes Ecritures rordonnes On ne peut pas supposer lordre des critures u Primitives de synchronisation Agissent comme des barrires mmoire
52. Variables spcifiques u Pb : comment grer les variables globales prives int my_x; void g(void) { my_x } void f(void) { my_x = do_compute(); g(); }
53. Variables spcifiques u Principe Variable accessible partir dune cl Allocation globale (souvent linitialisation) pthread_setspecific(cl, valeur) pthread_getspecific(cl) -> valeur u Exemple : la variable errno Fichier errno.h #ifdef _REENTRANT #define errno (*__errno_location()) #else extern int errno; #endif
54. A propos defficacit u Les threads sont-ils toujours meilleurs que MPI sur architectures SMP ? u Solution processus communicants Communications pnalisantes (copies) Surcot en utilisation de ressources Recouvrement plus difficile u Solution processus lgers Synchronisations additionnelles Accs aux variables spcifiques coteux
55. Le multithreading : quel(s) intrt(s) ? Ordonnancement des threads
56. Multithreading utilisateur u Deux ordonnanceurs indpendants : processor processor processor OS Kernel Process Process Process Scheduler User Space Scheduler Scheduler
57. Multithreading noyau u Un seul ordonnanceur : processor processor processor OS Kernel Process Process Process Scheduler User Space
58. Multithreading mixte u Deux ordonnanceurs cooprants processor processor processor OS Kernel Process Process Process Scheduler User Space Scheduler Scheduler Note: Quid des appels systmes bloquants ?
59. Ordonnancement non-premptif u Le processus cde la main Lorsquil se bloque Lorsquil meurt u Avantages Peu de commutations de contextes Attnuation des problmes de rentrance u Inconvnients Partage non-quitable des ressources Risque de famines
60. Ordonnancement premptif u Une horloge force les commutations u Avantages cf. inconvnients du non-premptif u Inconvnients cf. avantages du non-premptif u En gnral Threads noyaux premptif Threads utilisateurs non-premptif
61. Choix de lordonnancement u Niveau dordonnancement pthread_attr_setscope() PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_PROCESS u Classes dordonnancement pthread_attr_setschedpolicy() SCHED_FIFO SCHED_RR SCHED_OTHER
62. Le multithreading : quel(s) intrt(s) ? Recouvrement des Entres/Sorties
63. Recouvrement des E/S u Au lieu de Espace noyau Espace utilisateur Matriel syscall u on voudrait : Espace noyau Espace utilisateur Matriel I/O request interrupt Temps CPU perdu CPU utilis
64. E/S et ordonnancement u Threads noyaux : OK u Threads utilisateurs Appel bloquant -> blocage du processus entier u Threads mixtes Idem au bout dun certain nombre ! u Solutions ? Appels toujours non-bloquants (polling) Appels effectus par des threads ddis Support systme spcifique
65. Scheduler Activations u Introduit par [Anderson et al. 91] u Ide: la coopration entre les deux ordonnanceurs est bidirectionnelle Lordonnanceur utilisateur utilise des appels systmes Lordonnanceur noyau utilise des upcalls! u Upcalls Informe lapplication des vnements noyaux u Activations Autant dactivations en excution que de processeurs Contrles par le noyau u Principe mis en uvre dans Solaris
66. Multithreading Distribu Principe et Enjeux
67. Principe u Introduire les threads dans les applications distribues proc proc proc proc rseau
68. Enjeux u Bnfices escompts Recouvrement naturel des communications Meilleur support du paralllisme grain fin Uniformisation de la configuration machines monoprocesseur/machines SMP Virtualisation de larchitecture threads = processeurs virtuels cible pour des compilateurs (ex: HPF) quilibrage de charge gnrique et transparent Meilleure ractivit au rseau Excution distribue de langages multithreads
69. Virtualisation u Objectif Machine constitue de centaines de processeurs virtuels u Intrts Applications sadaptant la configuration Passage lchelle ( scalability ) quilibrage de charge possible par migration de threads quilibrage dynamique Rgulateur indpendant de lapplication !
70. Virtualisation : contraintes u Excution indpendante la localisation Problme des E/S dlicat u Communications par mmoire partage Mmoire virtuellement partage ncessaire Compatible avec les threads ! Difficile sur architecture htrogne u Architecture htrogne Migration des threads prohibitive
71. Meilleure ractivit au rseau u Illustration : MPI et les communications asynchrones Processus A Processus B Acquittement MPI_Isend MPI_recv MPI_test
72. Multithreading Distribu Quel modle de programmation ?
73. Approche par juxtaposition u Principe : pas de modle ! Simplement utiliser conjointement Une bibliothque de communication (ex: MPI) Une bibliothque de multithreading u Problmes Conceptuels Pas de visibilit globale des threads Smantique des communications ? Techniques Compatibilit entre les bibliothques Travail dintgration spcifique -> non rutilisable
74. Threads communicants u Principe Envoi de message entre threads Modle MPI-like Modle Acteurs Nommage Nommage global des threads Ports de communication u Exemples Chant (M. Haines, ICASE) Athapascan-0b (J. Briat, INRIA Grenoble)
75. Modle Pthreads tendu u Principe Threads + primitives tendues Create/Join distance Synchronisations distribues Particularits Nommage global des threads Restriction du modle Pthreads u Exemples Chant (M.Haines, ICASE), Rthreads (M. Zahn, Allemagne)
76. Modle Pthreads distribu u Principe Adaptation complte (?) de Pthreads Threads + mmoire virtuellement partage Transparence Cohrence assure lors des dfauts de pages Restriction sur les E/S Extensions Cohrences mmoires relches u Exemple DSM-Threads (F. Mueller, Berlin)
77. Modle driv des RPC u Principe Appel de procdure distance (A. Birell) Extension du concept aux threads Cration de threads pour excuter les procdures Dsignation globale des services Numro fonction Souches (stubs) pour la transmission des paramtres u Exemples Nexus (I. Foster, Argonne), PM2
78. Multithreading Distribu Intgration des threads et des communications
79. Progression des communications u Problme Comment assurer la progression des communications ? proc proc proc proc rseau
80. Scrutation et interruptions u La scrutation est ncessaire API rseau ne fournissant pas dappels bloquants OS ne fournissant pas dactivations Problme Frquence difficile assurer Coteux en prsence de multiple pollers u Les interruptions sont ncessaires Ractivit Problme Outils de synchronisation interrupt safe ?
81. Scrutation par lordonnanceur Ordonnanceur des threads Cration dune catgorie de polling (ex: MPI), assignation dune frquence et enregistrement de callbacks. Polling jobs queue MPI MPI_Isend Marcel_poll Chaque thread candidat une opration de polling adresse une requte lordonnanceur et se bloque. MPI_Irecv Marcel_poll callback callback Rgulirement, lordonnanceur appelle la fonction de scrutation dfinie par lutilisateur... Polling( )
82. Multithreading Distribu Lenvironnement PM2
83. Premires rflexions sur PM2 u Parallel Multithreaded Machine ( R. Namyst ) Virtualisation de larchitecture Rgulateurs gnriques de charge ( Y. Denneulin ) Plateformes usuelles (COW, NOW), machines parallles Distribution du logiciel, assistance, documentation:-( u InterPRC Stratagme (C. Roucairol) Applications irrgulires Optimisation combinatoire Algbre linaire creuse (J. Roman) Ordonnancement, rgulation Fortement irrgulire : placement + migration
84. Projet PM2 (95-xx) u Objectif ambitieux : virtualisation Indpendance de la machine cible (#processeurs) Degr de paralllisme important (#processus) Parler de traitement / processus mcanismes de dcomposition parallle u Propositions Mcanisme de dcomposition Appel de procdure distance lger (LRPC) Support des activits Processus lgers (threads) Rgulateur dynamique de charge Placement + Migration
85. Appel de procdure distance u Diffrentes dclinaisons Synchrone Attente diffre Asynchrone PM 2 PM 2 LRPC u Nos concurrents... Nexus : RSR Athapascan : appels de service
86. Hello World! #include
87. Threaded Hello world! Cration dun thread Obligatoirement par pm2_thread_create positionnement dun certain nombre dattributs hritage du droit de faire unpack ... void thread_func(void *arg) { char msg[128]; pm2_unpack_byte (SEND_CHEAPER, RECV_CHEAPER, msg, 128); pm2_rawrpc_waitdata (); printf(%s\n, msg); } void sample_func(void) { pm2_thread_create (thread_func, NULL); } ...
88. Mobilit des activits u Migration de processus lgers PM 2 PM 2 u Pourquoi ? Rgulation de charge Localit des donnes u Comment ? Transfert du contexte Programmes SPMD
89. PM2 : architecture logicielle u Lgende Marcel : noyau de processus lgers Madeleine : module de communication Marcel PM2 Madeleine Architecture (grappes, machines parallles) Unix (~10 versions) Interface de programmation (RPC, migration, allocation iso-adresse) Rgulation HPF, C* C++//, Java Applications
90. Marcel : des processus lgers u Multiprogrammation spcialise pour PM2 Sous-ensemble de POSIX + extensions Support pour la migration Srialisation des piles de threads Allocation des piles (Iso-Malloc, [Antoniu99]) Gestion mmoire optimise (cache de piles) u Deux niveaux de threads (noyau et utilisateur) Support des machines SMP Efficacit proche du niveau utilisateur Exploitation des Scheduler Activations sous Linux Appels systmes bloquants (Danjean00)
91. Marcel: Implantation SMP u Taille du pool de threads noyaux Automatique / option en ligne de commande u Ordonnancement Round-Robin sur chaque LWP Placement sur les LWP paramtrable marcel_attr_init(& attr ); marcel_attr_setschedpolicy(& attr , MARCEL_SCHED_FIXED(2) ); marcel_create(&pid, & attr , func, arg); ...
92. Marcel : performances u Comparatif avec dautres bibliothques u Performances brutes (meilleur cas) Opration Version mono Version SMP Chgt contexte 125 ns 212 ns Cration seule 536 ns 1 us Cration + termin. 833 ns 3 us Arbre de threads 1.232 ms 6.986 ms OS/Processeur Processus Thread kernel Thread user Marcel Linux 2.2 / PII 450 0.540 0.130 - 0.006 Solaris 2.7/ PII 350 8.622 0.214 0.160 0.009
93. Madeleine : objectifs u Supports des diffrents protocoles Systme (TCP, MPC) Haut-niveau (MPI, PVM) Bas-niveau (BIP, SISCI, VIA,) u Protocoles multi-paradigmes VIA : message-passing, remote DMA SCI : shared memory, DMA SBP : tampons statiques u Protocoles multi-modes BIP : messages courts, longs
94. Madeleine : communications LRPC, Migration Madeleine Interface de programmation Couche de portabilit MPI, PVM , TCP, UDP, BIP, SISCI, VIA, SHMEM
95. Packing - Unpacking Commandes: Mad_pack(cnx, buffer, len, pack_mode, unpack_mode) Mad_unpack(cnx, buffer, len, pack_mode, unpack_mode) Modes: Send_SAFER Send_CHEAPER Send_LATER Receive_EXPRESS Receive_CHEAPER
96. Emission : modes dempaquetage Version transmise Pack Modification End_packing Send_SAFER Send_LATER Send_CHEAPER
97. Rception : mode de dballage (1) Unpack Aprs Unpack End_packing Tampon Donnes disponibles u RECV_EXPRESS
98. Rception : mode de dballage (2) u RECV_CHEAPER Unpack Aprs Unpack End_packing Tampon Donnes disponibles ??? Donnes disponibles
99. Exemple: Protocole BIP/Myrinet Processus A Processus B Rseau Acquittement Message Entte Vecteur DMA
100. Madeleine sur BIP/Myrinet Madeleine/BIP Latence : 8 s Dbit : 125 Mo/s Migration PM2 : 52 s u Communication contexte utilisateur (L. Prylli) Zro copie Contrle de flux pour les petits messages
101. Madeleine : rsultats u Performances en latence 6 s sur SISCI/SCI 8 s sur BIP/Myrinet u Migration PM2 24 s sur SISCI/SCI 52 s sur BIP/Myrinet u Performance en bande passante 125 Mo/s sur BIP/Myrinet World record
102. Madeleine : dautres utilisations u Bus CORBA haute performance Collaboration avec Alcatel-INRIA Communications ORB efficaces Zro copie avec un ORB? Intgration thread et communication (ractivit) Support du multiprotocoles u MPI-Madeleine Collaboration avec L. Prylli (LIP) Implmentation MPI Intgration thread et communication (ractivit) Support du multiprotocoles
103. Compilation/excution dun programme PM2 u Fabrication dun profil Paramtrage de lenvironnement make xconfig - (pm2, debug, madeleine, protocole, marcel, mono-smp) - Gneration dune flavor u Slection du profil setenv PM2_FLAVOR=mon_profil u Compilation du programme make u Choix dune configuration pm2conf myri0 myri1 myri2 u Excution du programme pm2load programme arg1 arg2 argn
104. DSM-PM2 : mmoire partage et multithreading u Generic, configurable Support for multiple consistency models Multi-protocol support for a given consistency model User interface : protocol selection/specification initial distribution of DSM pages u Thread migration Integrated in consistency protocols Support for adaptive protocols: page migration vs. thread migration
105. Compilation HPF/C* sur PM2 Simulation de flamme Align Disribute Processors Threads PM2 u Equilibrage dynamique dans HPF/C* (C. Prez) Modification des excutifs des compilateurs Module gnrique dquilibrage de charge
106. Compilation et PM2 (suite) u Projet Hyperion (New Hampshire) Machine virtuelle Java distribue Thread Java calqus sur les threads PM2 Mmoire partage reposant sur DSM-PM2 Grappes de PC u Projet Paris (Rennes) Utilisation de Madeleine (Y. Jgou) MOME, DSM pour un compilateur HPF u Projet NANOS (Barcelone) Environnement pour machines SMP lorigine Portage sur PM2 et DSM-PM2 OpenMP
107. Lancer de rayons // (PM2) u Transfert technologique (TTN ProHPC) Socit AGEMOB Rendu 3D raliste de mobilier Serveur de calcul pour des chaines de distribution Projet MOB3D : LIP + AGEMOB + fabricants de meuble Calcul rapide dune image raliste sur rseau de stations u POV-Ray (Persistance Of Vision Ray-tracer) Domaine public, portabilit (Unix, NT) Assez largement utilis dans la communaut u PM2POVRAY Application parallle exploitant des grappes de SMP
108. Principe de PM2POV-Ray u Scne rplique sur chaque machine Dcoupage de limage en threads u Rgulation de charge Distribution cyclique des threads sur les machines Equilibrage dynamique par migration P0 P1 P2 P3 P0 P1 P2 P3
109. Conclusions u Efficacit et portabilit Bon compromis obtenu pour PM2 u Des collaborations Principalement pour des compilateurs et bibliothques Stages DEA-DESS, thse u Disponible sur Internet http://www.pm2.org u Collaborations industrielles Microsoft, Alcatel Arospatiale-Matra (caches Web)