Optimisations de la bibliothèque de communication MPI pour machines parallèles de type « grappe de PCs » sur une primitive décriture distante Olivier Glück.

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Optimisations de la bibliothèque de communication MPI pour machines parallèles de type « grappe de PCs » sur une primitive décriture distante Olivier Glück UPMC/LIP6/ASIM

2/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

3/46 Contexte et hypothèses Machines parallèles de type grappe de PCs sous UNIX Applications MPI en mode « batch » Réseau de communication : primitive décriture distante n le réseau est fiable n le contrôleur réseau utilise des accès DMA en lecture et en écriture pour accéder à la mémoire du nœud hôte n le contrôleur réseau ne peut transférer que des zones contiguës en mémoire physique n le nœud émetteur doit savoir à lavance où déposer les données sur le nœud récepteur 1 ère partie - Introduction

4/46 La primitive décriture distante sur MPC 1 ère partie - Introduction

5/46 Objectifs n Fournir lenvironnement MPI : l machines parallèles de type « grappe de PCs » l primitive décriture distante n Réduire le chemin critique logiciel 1 ère partie - Introduction

6/46 Les techniques doptimisation n Eviter la traversée dun grand nombre de couches de communication n Réduire le nombre de copies des données n Réduire le nombre dappel système en réalisant les communications en espace utilisateur n Eviter lutilisation dinterruptions pour la signalisation des communications n Réduire le coût des opérations de traduction dadresses virtuelles/physiques 1 ère partie - Introduction

7/46 Une stratégie « zéro-copie » 1 ère partie - Introduction

8/46 Les appels système 1 ère partie - Introduction

9/46 Les interruptions 1 ère partie - Introduction

10/46 Les traductions dadresses 1 ère partie - Introduction

11/46 La machine MPC 1 ère partie - Introduction

12/46 La machine MPC 1 ère partie - Introduction

13/46 La carte FastHSL 1 ère partie - Introduction Performances matérielles : n latence : 2 µs n débit maximum sur le lien : 1 Gbits/s (dans chaque sens) n débit utile matériel théorique : 512 Mbits/s

14/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

15/46 MPICH : une architecture en couches 2 ème partie - Architecture de MPI sur une primitive décriture distante Opérations collectives Opérations point à point

16/46 LAPI RDMA 2 ème partie - Architecture de MPI sur une primitive décriture distante RDMA : Remote Direct Memory Access API générique décriture en mémoire distante Objectifs : n définir la brique de base de notre implémentation de MPI n masquer les particularités des réseaux fournissant une primitive décriture distante Enjeu : n faire en sorte que notre travail puisse être exploitable sur dautres plate-formes matérielles

17/46 LAPI RDMA 2 ème partie - Architecture de MPI sur une primitive décriture distante Lécriture distante : n RDMA_SEND(nsrc, ndst, plad, prad, len, ctrl, sid, rid, ns, nr) La notification : n RDMA_SENT_NOTIFY(ctrl, sid) n RDMA_RECV_NOTIFY(nsrc, ctrl, rid) La signalisation par scrutation (optionnelle) : n RDMA_NET_LOOKUP(blocking) Format des messages : paramètres supplémentaires à véhiculer de lémetteur vers le récepteur

18/46 Les problèmes à résoudre 2 ème partie - Architecture de MPI sur une primitive décriture distante Les problèmes liés à la primitive décriture distante : n le dépôt direct en mémoire : lémetteur doit connaître les adresses physiques des tampons distants n lutilisation dadresses physiques alors que lapplication manipule des adresses virtuelles Les services à fournir à MPICH : n transmission des messages CTRL/DATA n signalisation des événements réseau n mécanisme de contrôle de flux n fixer le seuil optimal entre les messages CTRL/DATA

19/46 Les messages CTRL 2 ème partie - Architecture de MPI sur une primitive décriture distante n Transfert dinformations de contrôle ou de données de taille limitée n Utilisation de tampons intermédiaires contigus en mémoire physique et alloués au démarrage de lapplication pas de traduction dadresses, adresse du tampon distant connue sur lémetteur, recopie systématique, contrôle de flux

20/46 Les messages DATA 2 ème partie - Architecture de MPI sur une primitive décriture distante n Transfert des données de lapplication en mode « zéro-copie » n Utilisation dun protocole de rendez-vous entre lémetteur et le récepteur traduction dadresses sur lémetteur et le récepteur, le message RSP contient la description en mémoire physique du tampon de réception

21/46 Le format des messages CTRL 2 ème partie - Architecture de MPI sur une primitive décriture distante

22/46 Le mode standard dans MPI 2 ème partie - Architecture de MPI sur une primitive décriture distante

23/46 2 ème partie - Architecture de MPI sur une primitive décriture distante Liens entre MPI et lAPI RDMA

24/46 2 ème partie - Architecture de MPI sur une primitive décriture distante Performances de MPI-MPC1 419 Processeur PII-350MHz 256Mo de RAM Bus PCI 33MHz Linux

25/46 2 ème partie - Architecture de MPI sur une primitive décriture distante Analyse des performances de MPI-MPC1 accès config = moyen de donner les ordres au contrôleur réseau

26/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

27/46 3 ème partie - Optimisations des couches basses de communication Objectifs de MPI-MPC2 Réaliser les communications en mode utilisateur en partageant les ressources réseau. Remplacer les interruptions matérielles par une signalisation par scrutation. Etudier limpact de ces changements sur les performances.

28/46 3 ème partie - Optimisations des couches basses de communication Une écriture distante en mode utilisateur

29/46 3 ème partie - Optimisations des couches basses de communication Les problèmes à résoudre n Comment protéger laccès en mode utilisateur aux ressources partagées : LME, LMR, registres internes du contrôleur réseau ? n Comment réaliser une signalisation par scrutation ? n Comment garantir que toutes les entrées dun même message soient consécutives dans la LME ?

30/46 3 ème partie - Optimisations des couches basses de communication Principe de la méthode

31/46 3 ème partie - Optimisations des couches basses de communication La signalisation On a rajouté deux primitives pour mettre à jour les états de toutes les communications en cours : n scrutation de la LME en émission n scrutation de la LMR en réception La scrutation est à linitiative de MPI

32/46 3 ème partie - Optimisations des couches basses de communication Les verrous n verrou = variable mémoire partagée entre les différents processus n à chaque opération est associé un verrou n prise et libération dun verrou atomique au niveau du processeur (test&set en mode utilisateur) n plusieurs verrous pour ne verrouiller que ce qui est nécessaire à lopération en cours

33/46 3 ème partie - Optimisations des couches basses de communication Performances de MPI-MPC2 421

34/46 3 ème partie - Optimisations des couches basses de communication Analyse des performances En ce qui concerne la latence : n gain supérieur à 40% : de 26µs avec MPI-MPC1 à 15µs n 15µs = 5µs (matérielle) + 10µs (logicielle soit 3500 cycles) n gain significatif en débit en ce qui concerne les messages de petite taille En ce qui concerne le débit maximum : n très faible gain car indépendant de la taille des données

35/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

36/46 4 ème partie - Optimisations des traductions dadresses Objectifs de MPI-MPC3 n Supprimer les appels système liés aux traductions dadresses n Saffranchir de la discontinuité des tampons de lapplication en mémoire physique n Faire en sorte que la méthode proposée soit transparente : l pas de modification de lOS et de la librairie C l pas dajout de primitives au standard MPI l pas de modification du code de lapplication, compatibilité binaire (pas besoin de recompiler les fichiers objets) Pour toutes les données susceptibles dêtre transférées : adresse virtuelle = adresse physique + déplacement

37/46 4 ème partie - Optimisations des traductions dadresses Principe de la méthode

38/46 4 ème partie - Optimisations des traductions dadresses Performances de MPI-MPC3 485

39/46 4 ème partie - Optimisations des traductions dadresses Analyse des performances n Suppression des appels système liés aux traductions dadresses n Réduction du nombre décritures distantes pour transmettre un message DATA : de plusieurs centaines à 1 seule pour transmettre 1024Ko n Réduction de la taille du message RSP dans le protocole de rendez-vous : de plusieurs Ko à 28 octets

40/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

41/46 5 ème partie - Résultats expérimentaux avec des applications réelles Résultats avec CADNA CADNA : logiciel pour prendre en compte les erreurs darrondi dans les calculs numériques Gain de 36% avec MPI-MPC2

42/46 5 ème partie - Résultats expérimentaux avec des applications réelles Résultats avec Laplace Résolution de léquation de Laplace par la méthode de Jacobi sur 4 processeurs

43/46 Plan 1. Introduction : contexte et objectifs 2. MPI-MPC1 : MPI sur une primitive décriture distante 3. MPI-MPC2 : optimisations bas niveau 4. MPI-MPC3 : traductions dadresses optimisées 5. Résultats expérimentaux 6. Conclusion

44/46 6 ème partie - Conclusion Objectifs atteints n Une implémentation optimisée de MPI sur une primitive décriture distante générique (RDMA) n Suppression des appels système et des interruptions lors des phases de communication Gain en latence n Simplification des traductions dadresses : adresse virtuelle = adresse physique + déplacement Gain en débit n Confirmation des résultats obtenus avec un ping-pong sur deux applications réelles

45/46 6 ème partie - Conclusion Résultats obtenus

46/46 6 ème partie - Conclusion Perspectives n Recouvrement calcul/communication : une implémentation multi-threads n Le standard MPI2 : l création dynamique de tâches l primitives de communication unidirectionnelle sans action du processeur distant n Portage sur dautres plate-formes matérielles : l Myrinet l ANI/HSL

Optimisations de la bibliothèque de communication MPI pour machines parallèles de type « grappe de PCs » sur une primitive décriture distante Olivier Glück UPMC/LIP6/ASIM

48/46 2 ème partie - Architecture de MPI sur une primitive décriture distante La signalisation

49/46 3 ème partie - Optimisations des couches basses de communication La signalisation

50/46 3 ème partie - Optimisations des couches basses de communication Les ressources partagées n La Liste des Messages à Emettre (LME) n La Liste des Messages Reçus (LMR) n Les registres internes du contrôleur réseau

51/46 2 ème partie - Architecture de MPI sur une primitive décriture distante Les émissions/réceptions simultanées Pourquoi : pouvoir traiter plusieurs émissions/réceptions simultanément besoin didentifier une communication

52/46 4 ème partie - Optimisations des traductions dadresses Les problèmes à résoudre Comment faire pour projeter les zones contiguës en mémoire physique dans la mémoire virtuelle du processus à lemplacement des anciens segments ? utilisation dune librairie dynamique : exécution de code en dehors du segment de code du processus déplacement du segment de pile du processus Comment réaliser ces opérations de façon transparente pour lutilisateur avant lexécution de lapplication ? utilisation dun langage objet permettant d exécuter du code avant le début de lapplication : ces opérations sont réalisées dans le constructeur de lobjet

53/46 Espace dadressage

54/46 Le tas

55/46 La pile

56/46 Compilation

57/46 Les différentes étapes n informations utilisateur n taille des zones « pile » et « données » n augmentation taille du tas n sauvegarde sur disque n réservation mémoire physique n projection n recopie des segments sauvegardés n translation du pointeur de pile n modification des arguments n empilement des paramètres du main puis call n restauration du contexte + ret n appel du destructeur

58/46 Le réseau SCI n lectures/écritures distantes mais paradigme de programmation différent n zones exportées/importées limitées n correspondance virtuelle/physique dans linterface réseau

59/46 GM n « registering memory » : primitives pour verrouiller un tampon et informer le contrôleur réseau de la correspondance virtuelle/physique n gm_directed_send(port, src_buf, dst_buf, len, dst_id, …) : écriture distante vers une zone enregistrée au préalable (désactivé par défaut)