Multithreading et Calcul Haute Performance

Multithreading et Calcul Haute Performance
paly

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 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 #include < pthread.h > void *func(void *arg) { printf( Thread %x says %s\n, pthread_self (), arg); return NULL; } int main(void) { pthread_t pid; pthread_create (&pid, NULL, func, Hello World! ); printf( This is the main thread\n); pthread_join (pid, NULL); return 0; }

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 #include < pthread.h > void *handle_request(void *arg) { } int main(void) { pthread_attr_t attr; for(;;) { fd = accept(sock, ); pthread_attr_init (&attr); pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED ); pthread_create ( NULL , &attr, handle_request, fd); } }

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 unsigned SAMPLE ; void sample_func (void) { char msg[128]; pm2_unpack_byte (SEND_CHEAPER, RECV_CHEAPER, msg, 128); pm2_rawrpc_waitdata (); printf(%s\n, msg); } void main (int argc, char **argv) { int module[MAX_MODULES], nb_modules; pm2_rawrpc_register (& SAMPLE , sample_func ); pm2_init (&argc, argv, 2, module, &nb_modules); if( pm2_self () == les_modules[0]) { pm2_rawrpc_begin (module[1], SAMPLE , NULL); pm2_pack_byte (SEND_CHEAPER, RECV_CHEAPER, Hello World!, 128); pm2_rawrpc_end (); pm2_kill_modules (module, nb_modules); } pm2_exit (); }

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)

Related