SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss Université de Nancy, Équipe AlGorille 17 février 2011 SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 1/ 26
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 2/ 26 Plan Introduction Précision Scalabilité Vitesse Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 3/ 26 Plan Introduction Motivations Approches Description de SMPI Précision Scalabilité Vitesse Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 4/ 26 Motivations : pourquoi utiliser la simulation? Prédiction de performance (hypothèses scénaristiques) Spécification de plateforme Adaptation matérielle Paramétrage applicatif Apprentissage (programmation parallèle, calcul haute-performance) Pas de recours nécessaire à des plateformes réelles Environnement local, pas d interférences Défis à relever Précision : la simulation reflète-t-elle la réalité? Scalabilité : quelle taille d application simuler? sur quelles plateformes? Vitesse : la simulation est-elle plus rapide que l exécution réelle? Reproductibilité : les résultats sont-ils stables et réutilisables?
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 5/ 26 Approches : comment faire une simulation? Simulation off-line Acquisition et rejeu de traces Liée à un jeu de paramètres applicatifs Besoin d une taille minimale de plateforme Impossibilité de simuler des applications sensibles au réseau LogGOPSim, PSiNS Simulation on-line Exécution directe du code Simulation des temps de communication Une seule machine nécessaire MPI-NetSim, SMPI
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 6/ 26 Simulation on-line dans SMPI Implémentation partielle de MPI au-dessus de SimGrid Pas ou peu de modification du code (C ou Fortran) Exécution réelle du code sur une machine hôte Report des temps d exécution dans la simulation Modèle CPU : ratio de puissance Simulation des communications Modèle réseau par flux (ethernet) Validité des modèles pour les applications MPI Repliement d une application répartie dans un seul processus système Sérialisation des calculs Espace d adressage unique Nécessité de réduire l emprunte mémoire (scalabilité) et CPU (vitesse)
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 7/ 26 Modèles réseaux existants dans SimGrid Caractéristiques des liens : latence (L) et bande-passante (B) Simulation par flux Simulation rapide Calcul de contention simple Modèle simple : T (S) = L + S B Modèle valide pour S 10 Mo S min(β B, 2 L) γ α permet de modéliser le slow-start de TCP β permet de modéliser le surcoût des en-têtes TCP/IP γ permet de modéliser les effets de la fenêtre TCP Modèle amélioré : T (S) = α L + Modèle valide pour S 100 Ko, trop gros pour des applications MPI Besoin d un nouveau modèle réseau
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 8/ 26 Validation expérimentale : mesure de l erreur Comparer un temps réel R et un temps simulé S Différence : Err = S R R = 10 ms S = 9 ms Err = 1 ms R = 1 s S = 1.001 s Err = 1 ms
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 8/ 26 Validation expérimentale : mesure de l erreur Comparer un temps réel R et un temps simulé S Erreur relative : Err = S R R R = 10 ms S = 9 ms Err = 0.1 (-10 %) R = 1 s S = 1.001 s Err = 0.001 (0.1 %)
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 8/ 26 Validation expérimentale : mesure de l erreur Comparer un temps réel R et un temps simulé S Erreur relative : Err = S R R R = 1 s S = 0.5 s Err = 0.5 (-50 %) R = 1 s S = 2 s Err = 1 (100 %)
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 8/ 26 Validation expérimentale : mesure de l erreur Comparer un temps réel R et un temps simulé S Erreur logarithme : Err = ln(s) ln(r) = ln(r) ln(s) R = 1 s S = 0.5 s Err = 0.69 (100 %) R = 1 s S = 2 s Err = 0.69 (100 %)
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 9/ 26 Plan Introduction Précision Opérations point-à-point Opérations collectives Scalabilité Vitesse Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 10/ 26 Communications point-à-point : Griffon 100000 Temps de communication (en µs) 10000 1000 100 1 10 100 1000 10000 100000 1e+06 1e+07 Taille des messages (en octets) Mesures expérimentales avec SKaMPI Modèle linéaire par défaut, 32.1% d erreur
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 10/ 26 Communications point-à-point : Griffon 100000 Temps de communication (en µs) 10000 1000 100 1 10 100 1000 10000 100000 1e+06 1e+07 Taille des messages (en octets) Mesures expérimentales avec SKaMPI Modèle linéaire optimal, 18.5% d erreur
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 10/ 26 Communications point-à-point : Griffon 100000 Temps de communication (en µs) 10000 1000 100 1 10 100 1000 10000 100000 1e+06 1e+07 Taille des messages (en octets) Mesures expérimentales avec SKaMPI Découpage en morceaux
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 10/ 26 Communications point-à-point : Griffon 100000 Temps de communication (en µs) 10000 1000 100 1 10 100 1000 10000 100000 1e+06 1e+07 Taille des messages (en octets) Mesures expérimentales avec SKaMPI Nouveau modèle linéaire par morceaux, 8.63% d erreur
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 11/ 26 Instantiation du modèle linéaire par morceaux 9 paramètres au lieu de 3 pour le modèle précédent 2 limites de segments 2 facteurs α et β par segment 1 facteur γ global SMPI est fournit avec un script d instantiation qui utilise 1 fichier de données au format SKaMPI Le nombre de liens traversés lors du ping-pong La valeur de L et B pour les liens Les limites des segments
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 12/ 26 Collectives : choix des algorithmes Différents algorithmes optimaux dans différentes situations Monde réel (OpenMPI, MPICH2) Sélection dynamique des algorithmes Fonction du nombre de processus et de la taille des messages Monde simulé (SMPI) Un seul algorithme pour tout les cas Conséquence : implémentation manuelle pour comparaison
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 13/ 26 One-to-many : MPI_Scatter 0 8 4 2 1 12 10 9 6 5 3 14 13 11 7 15 Algorithme par arbre binomial 64 Mo à la racine, 4 Mo par processus
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 14/ 26 Scatter : Comparaison entre processus 1 0.8 SMPI avec contention SMPI sans contention OpenMPI MPICH2 Temps (en s) 0.6 0.4 0.2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Processus La prise en compte de la contention est importante Comparaison SMPI/MPICH2 OpenMPI/MPICH2 : 5.3% d erreur
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 15/ 26 Plan Introduction Précision Scalabilité NAS Benchmark Data Traffic Réduction de la consommation mémoire Résultats sur Data Traffic Vitesse Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 16/ 26 NAS : Data Traffic (DT) Peu de calculs (hormis la construction du graphe) Schémas de communications possibles : WhiteHole (WH) 0 4 3 2 1 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 BlackHole (BH) 6 7 5 14 15 2 12 0 9 10 11 4 13 3 1 8 17 19 16 18 20 La taille du problème détermine le nombre de processus Classe A : 21 processus Classe B : 43 processus Classe C : 85 processus
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 16/ 26 NAS : Data Traffic (DT) Peu de calculs (hormis la construction du graphe) Schémas de communications possibles : Shuffle (SH) 10 11 9 8 12 13 14 15 3 2 1 0 5 4 7 6 27 25 29 31 19 17 21 26 24 28 30 18 16 20 23 22 43 47 35 41 45 33 39 37 42 46 34 40 44 32 38 36 63 59 55 51 61 57 53 49 62 58 54 50 56 60 48 52 71 79 67 75 69 77 70 78 66 74 64 72 65 73 68 76 La taille du problème détermine le nombre de processus Classe A : 80 processus Classe B : 192 processus Classe C : 448 processus
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 17/ 26 DT : Comparaison avec OpenMPI 4 3.5 SMPI OpenMPI BH BH 3 WH WH Temps (en s) 2.5 2 1.5 1 0.5 WH WH BH BH 0 A Classe de problème B Erreur moyenne : 8.11% Difficile d exécuter SH ou la classe C en réel : taille limite du cluster Pas assez de mémoire pour simuler SH au-delà de la classe B
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 18/ 26 Réduction de la consommation mémoire Exemple : double* data = (double*)smpi_shared_malloc(...);... SMPI_SHARED_FREE(data); Changements mineurs Tableaux partagés entre les processus Résultats des calculs faux Temps simulés corrects
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 19/ 26 Réduction de la consommation mémoire : DT RSS maximale par processus (en Mo) 500 400 300 200 100 0 SMPI SMPI + Réduction de RAM BH SH WH WH BH SH WH WH BH BH SH SH WH BH WH OM OM A B C Classe de problème BH SH OM SH Gain en moyenne d un facteur 11.9 (maximum 40.5) La classe C devient accessible
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 20/ 26 Plan Introduction Précision Scalabilité Vitesse NAS Benchmark Embarassingly Parallel Réduction de l utilisation CPU Résultats sur Embarassingly Parallel Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 21/ 26 NAS : Embarassingly Parallel (EP) Pas de communications (hors aggrégation des résultats) Partage du calcul entre les processus Cas réel idéal : exécution parallèle des processus Simulation : exécution séquentielle des processus Simulation plus lente que l exécution réelle avec moins de ressources
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 22/ 26 Réduction de l utilisation CPU Exemple : for(i = 0; i < n; i++) SMPI_SAMPLE_LOCAL(0.75*n,0.01) {... }... for(j = 0; j < k; j++) SMPI_SAMPLE_GLOBAL(0.5*k,0.01) {... } Changements mineurs Échantillonnage : mesure du temps CPU pour un ensemble d itérations Chaque processus exécute le nombre d itérations spécifié (LOCAL) Tous les processus participent à l exécution (GLOBAL) Simulation des itérations restantes par la moyenne des mesures
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 23/ 26 Réduction de l utilisation CPU : EP Temps de simulation (en s) 120 100 80 60 40 SMPI (Temps de simulation) SMPI (Temps simulé) OpenMPI 26 25 24 23 22 21 20 19 Temps simulé (en s) 20 100 75 50 Ratio d échantillonnage (en %) 18 25 Diminution linéaire de l utilisation CPU avec le ratio d échantillonnage Pas de perte de précision de simulation
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 24/ 26 Plan Introduction Précision Scalabilité Vitesse Conclusion et perspectives
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 25/ 26 Conclusion SMPI est un simulateur fonctionnel qui permet la reproductibilité Open Source Script d instantiation Le nouveau modèle réseau apporte plus de précision Les techniques de réduction de l usage des ressources améliorent à la fois la vitesse et la scalabilité Les améliorations apportées ont fait l objet d une validation importante Connaissance des cas positifs Identification des points améliorables
SMPI : Simulation d applications MPI dans SimGrid Pierre-Nicolas Clauss 26/ 26 Perspectives Améliorations à court terme Prise en compte de comportements ethernet Prise en compte de phénomène de sérialisation des paquets Objectifs à moyen terme Modèles pour d autre types de réseaux : Myrinet, Infiniband Objectifs à plus long terme Simuler les entrées/sorties Utiliser automatiquement les techniques de réduction à la compilation Simuler une implémentation MPI donnée : OpenMPI, MPICH2