Title: Optimisations de la biblioth
1Optimisations 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
Olivier.Gluck_at_lip6.fr
2Plan
- 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
3Contexte 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 - le réseau est fiable
- 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 - le contrôleur réseau ne peut transférer que des
zones contiguës en mémoire physique - le nœud émetteur doit savoir à lavance où
déposer les données sur le nœud récepteur
1ère partie - Introduction
4La primitive décriture distante sur MPC
1ère partie - Introduction
5Objectifs
- Fournir lenvironnement MPI
- machines parallèles de type grappe de PCs
- primitive décriture distante
- Réduire le chemin critique logiciel
1ère partie - Introduction
6Les techniques doptimisation
- Eviter la traversée dun grand nombre de couches
de communication - Réduire le nombre de copies des données
- Réduire le nombre dappel système en réalisant
les communications en espace utilisateur - Eviter lutilisation dinterruptions pour la
signalisation des communications - Réduire le coût des opérations de traduction
dadresses virtuelles/physiques
1ère partie - Introduction
7Une stratégie zéro-copie
1ère partie - Introduction
8Les appels système
1ère partie - Introduction
9Les interruptions
1ère partie - Introduction
10Les traductions dadresses
1ère partie - Introduction
11La machine MPC
1ère partie - Introduction
12La machine MPC
1ère partie - Introduction
13La carte FastHSL
- Performances matérielles
- latence 2 µs
- débit maximum sur le lien 1 Gbits/s (dans
chaque sens) - débit utile matériel théorique 512 Mbits/s
1ère partie - Introduction
14Plan
- 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
15MPICH une architecture en couches
2ème partie - Architecture de MPI sur une
primitive décriture distante
16LAPI RDMA
- RDMA Remote Direct Memory Access
- API générique décriture en mémoire distante
- Objectifs
- définir la brique de base de notre implémentation
de MPI - masquer les particularités des réseaux
fournissant une primitive décriture distante - Enjeu
- faire en sorte que notre travail puisse être
exploitable sur dautres plate-formes matérielles
2ème partie - Architecture de MPI sur une
primitive décriture distante
17LAPI RDMA
- Lécriture distante
- RDMA_SEND(nsrc, ndst, plad, prad, len, ctrl, sid,
rid, ns, nr) - La notification
- RDMA_SENT_NOTIFY(ctrl, sid)
- RDMA_RECV_NOTIFY(nsrc, ctrl, rid)
- La signalisation par scrutation (optionnelle)
- RDMA_NET_LOOKUP(blocking)
- Format des messages
paramètres supplémentaires à véhiculer de
lémetteur vers le récepteur
2ème partie - Architecture de MPI sur une
primitive décriture distante
18Les problèmes à résoudre
- Les problèmes liés à la primitive décriture
distante - le dépôt direct en mémoire lémetteur doit
connaître les adresses physiques des tampons
distants - lutilisation dadresses physiques alors que
lapplication manipule des adresses virtuelles - Les services à fournir à MPICH
- transmission des messages CTRL/DATA
- signalisation des événements réseau
- mécanisme de contrôle de flux
- fixer le seuil optimal entre les messages
CTRL/DATA
2ème partie - Architecture de MPI sur une
primitive décriture distante
19Les messages CTRL
- Transfert dinformations de contrôle ou de
données de taille limitée - 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
2ème partie - Architecture de MPI sur une
primitive décriture distante
20Les messages DATA
- Transfert des données de lapplication en mode
zéro-copie - 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
2ème partie - Architecture de MPI sur une
primitive décriture distante
21Le format des messages CTRL
2ème partie - Architecture de MPI sur une
primitive décriture distante
22Le mode standard dans MPI
2ème partie - Architecture de MPI sur une
primitive décriture distante
23Liens entre MPI et lAPI RDMA
2ème partie - Architecture de MPI sur une
primitive décriture distante
24Performances de MPI-MPC1
- Processeur PII-350MHz
- 256Mo de RAM
- Bus PCI 33MHz
- Linux 2.2.18
2ème partie - Architecture de MPI sur une
primitive décriture distante
25Analyse des performances de MPI-MPC1
- accès config moyen de donner les ordres au
contrôleur réseau
2ème partie - Architecture de MPI sur une
primitive décriture distante
26Plan
- 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
27Objectifs 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.
3ème partie - Optimisations des couches basses de
communication
28Une écriture distante en mode utilisateur
3ème partie - Optimisations des couches basses de
communication
29Les problèmes à résoudre
- Comment protéger laccès en mode utilisateur aux
ressources partagées LME, LMR, registres
internes du contrôleur réseau ? - Comment réaliser une signalisation par scrutation
? - Comment garantir que toutes les entrées dun même
message soient consécutives dans la LME ?
3ème partie - Optimisations des couches basses de
communication
30Principe de la méthode
3ème partie - Optimisations des couches basses de
communication
31La signalisation
- On a rajouté deux primitives pour mettre à jour
les états de toutes les communications en cours - scrutation de la LME en émission
- scrutation de la LMR en réception
- La scrutation est à linitiative de MPI
3ème partie - Optimisations des couches basses de
communication
32Les verrous
- verrou variable mémoire partagée entre les
différents processus - à chaque opération est associé un verrou
- prise et libération dun verrou atomique au
niveau du processeur (testset en mode
utilisateur) - plusieurs verrous pour ne verrouiller que ce qui
est nécessaire à lopération en cours
3ème partie - Optimisations des couches basses de
communication
33Performances de MPI-MPC2
421
3ème partie - Optimisations des couches basses de
communication
34Analyse des performances
- En ce qui concerne la latence
- gain supérieur à 40 de 26µs avec MPI-MPC1 à
15µs - 15µs 5µs (matérielle) 10µs (logicielle soit
3500 cycles) - gain significatif en débit en ce qui concerne les
messages de petite taille - En ce qui concerne le débit maximum
- très faible gain car indépendant de la taille des
données
3ème partie - Optimisations des couches basses de
communication
35Plan
- 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
36Objectifs de MPI-MPC3
- Supprimer les appels système liés aux traductions
dadresses - Saffranchir de la discontinuité des tampons de
lapplication en mémoire physique - Faire en sorte que la méthode proposée soit
transparente - pas de modification de lOS et de la librairie C
- pas dajout de primitives au standard MPI
- 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
4ème partie - Optimisations des traductions
dadresses
37Principe de la méthode
4ème partie - Optimisations des traductions
dadresses
38Performances de MPI-MPC3
485
4ème partie - Optimisations des traductions
dadresses
39Analyse des performances
- Suppression des appels système liés aux
traductions dadresses - Réduction du nombre décritures distantes pour
transmettre un message DATA de plusieurs
centaines à 1 seule pour transmettre 1024Ko - Réduction de la taille du message RSP dans le
protocole de rendez-vous de plusieurs Ko à 28
octets
4ème partie - Optimisations des traductions
dadresses
40Plan
- 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
41Résultats avec CADNA
- CADNA logiciel pour prendre en compte les
erreurs darrondi dans les calculs numériques
5ème partie - Résultats expérimentaux avec des
applications réelles
42Résultats avec Laplace
- Résolution de léquation de Laplace par la
méthode de Jacobi sur 4 processeurs
5ème partie - Résultats expérimentaux avec des
applications réelles
43Plan
- 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
44Objectifs atteints
- Une implémentation optimisée de MPI sur une
primitive décriture distante générique (RDMA) - Suppression des appels système et des
interruptions lors des phases de communication - ? Gain en latence
- Simplification des traductions dadresses
- adresse virtuelle adresse physique
déplacement - ? Gain en débit
- Confirmation des résultats obtenus avec un
ping-pong sur deux applications réelles
6ème partie - Conclusion
45Résultats obtenus
6ème partie - Conclusion
46Perspectives
- Recouvrement calcul/communication une
implémentation multi-threads - Le standard MPI2
- création dynamique de tâches
- primitives de communication unidirectionnelle
sans action du processeur distant - Portage sur dautres plate-formes matérielles
- Myrinet
- ANI/HSL
6ème partie - Conclusion
47Optimisations 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
Olivier.Gluck_at_lip6.fr
48La signalisation
2ème partie - Architecture de MPI sur une
primitive décriture distante
49La signalisation
3ème partie - Optimisations des couches basses de
communication
50Les ressources partagées
- La Liste des Messages à Emettre (LME)
- La Liste des Messages Reçus (LMR)
- Les registres internes du contrôleur réseau
3ème partie - Optimisations des couches basses de
communication
51Les émissions/réceptions simultanées
- Pourquoi pouvoir traiter plusieurs
émissions/réceptions simultanément ? besoin
didentifier une communication
2ème partie - Architecture de MPI sur une
primitive décriture distante
52Les 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
4ème partie - Optimisations des traductions
dadresses
53Espace dadressage
54Le tas
55La pile
56Compilation
57Les différentes étapes
- informations utilisateur
- taille des zones pile et données
- augmentation taille du tas
- sauvegarde sur disque
- réservation mémoire physique
- projection
- recopie des segments sauvegardés
- translation du pointeur de pile
- modification des arguments
- empilement des paramètres du main puis call
- restauration du contexte ret
- appel du destructeur
58Le réseau SCI
- lectures/écritures distantes mais paradigme de
programmation différent - zones exportées/importées limitées
- correspondance virtuelle/physique dans
linterface réseau
59GM
- registering memory primitives pour
verrouiller un tampon et informer le contrôleur
réseau de la correspondance virtuelle/physique - 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)