390 likes | 553 Views
FAST : Fast Agent System Timer . Un outil de modélisation des performances dans un environnement de metacomputing Équipe ReMaP LIP, ENS Lyon, France. Plan. Introduction Comment utiliser FAST ? L’API de FAST Extension parallèle (Freddy – FS et EC) Quelques résultats expérimentaux
E N D
FAST : Fast Agent System Timer Un outil de modélisation des performances dans un environnement de metacomputing Équipe ReMaP LIP, ENS Lyon, France
Plan • Introduction • Comment utiliser FAST ? • L’API de FAST • Extension parallèle (Freddy – FS et EC) • Quelques résultats expérimentaux • Conclusions et travaux futurs
Prédiction de performances Grid computing Objectif : Fédérer les ressources de calcul Le web est pour les informations, la grille sera pour les calculs Avantages : Potentiel sans fin. En bref, c’est l’avenir. Problèmes : Encore nombreux… • Découverte des ressources • Ordonnancement • Sécurité • Passage à l’échelle
interactif échelle macro Besoin des routines Disponibilité du système Étalonnage préalable des sous programmes Surveillance du système (NWS) • Temps de calcul • Espace mémoire • Communications • Charge processeur • Mémoire et disque libre • Bande passante et latence Présentation de FAST Objectif : prédireles performances de sous-programmessur machine donnée à un instant donné.
Connaître les besoins des routines Différentes méthodes selon la routine : • Routines simples (BLAS) • Étalonnage à l’installation • Routines complexes (ScaLAPACK) • Étude du source et décomposition en appels à FAST élémentaires • Routines compliquées (Matrices creuses) • Pas de prédiction, choix de la machine la plus puissante
Les problèmes de l’étalonnage • Obtention des chronométrages • Charge extérieure • Temps processeur (utime + stime) • Obtention de l’espace mémoire • Variation au cours de la vie du processus • Exécution en mode pas à pas (comme gdb) Le processus est long, mais • Uniquement à l’installation • Réutilisation des résultats pour un parc de machines • Étalonnage pour des machines types puis facteur correctif
Requête Réponse Serveur de nom Prédicateur Requête Mémoire Données Stockage Stockage Senseur Senseur Test Connaître les disponibilités du système : NWS Network Weather Service (Prof. Wolski) • Mesure la disponibilité de ressources • charge CPU, bande passante, etc. • Prédit les futures variations par traitement statistique • Extensible et ouvert • Largement répandu (Globus, NetSolve, Ninf, etc.) Client Test
Plan • Introduction • Comment utiliser FAST ? • L’API de FAST • Extension parallèle (Freddy – FS et EC) • Quelques résultats expérimentaux • Conclusions et travaux futurs
Utiliser FAST Phase 1 : Lors de l’installation Étape 1 : Installer Étape 2 : Étalonner les routines possibles Phase 2 : Pour l’utilisation Étape 3 : Mettre en place la plate-forme Étape 4 : Utiliser FAST
Installer FAST Dépendances : - Berkeley DB 2 : base de donnée classique. - Gnu Scientific Library : pour faire des maths facilement - LDAP : base de données hiérarchique et distribuée - NWS : système de surveillance du système Mais c’est très simple :) - ces éléments sont simples à installer - autoconf pour trouver ces bibliothèques automagiquement - on pourrait retirer des dépendances…
fast_bench Programme : Étalonner les routines possibles Programme contenant les opérations à tester + Entrée : Scénario des tests Base de données des résultats bruts (10-100Mo) Interpolation polynomiale fonction des paramètres + Résultat : Dépendances : BDB + GSL
Programme contenant l’opération int main(int argc,char **argv){ […] TransA=(argv[1])[0]; TransB=(argv[2])[0]; M=atol(argv[3]); N=atol(argv[4]); K=atol(argv[5]); alpha=atof(argv[6]); beta=atof(argv[7]); LDA=(TransA == 'n' || TransA == 'N' ? M : K); ka =(TransA == 'n' || TransA == 'N' ? K : M); […] A=(double *)malloc(sizeof(double)*LDA*ka); memset(A,2,sizeof(double)*LDA*ka); […] dgemm_(&TransA,&TransB,&M,&N,&K, &alpha,A,&LDA, B,&LDB, &beta,C,&M); return 0; }
Scénario des tests à réaliser CATEGORY=BLAS/dtrsm BINARY=./fast_bench_blas ARGS=%!s=dtrsm;%s=l|r;%s=u|l;%s=n|t;%s=u|n;%d=128:1152:128;%c=5 #side=l|r uplo=u|l TransA=n|t diag=u|n M N CATEGORY=BLAS/dgemm BINARY=./fast_bench_blas ARGS=%!s=dgemm;%s=n;%s=n;%d=128:1152:128;%d=128:1152:128;%d=128:1152:128;%a;%a Un jour, ce fichier sera en XML :)
Interpolation des résultats(fonctionS des paramètres) Pour le temps de dgemm dans le cas {n,n,2,2} sur icluster : degré 3, 20 termes. Time(M,N,K)=2-2-2-4 M -6-6 N -9-8 K +4-7 M2 -2-8 N2 -2-11 K2 +9-8 MN +1-10 MK +2-7 NK -2-10 M3 +7-5 N3 -8-7 K3 +4-11 M2N -2-11 MN2 +1-7 M2K +3-11 MNK -3-8 N2K -3-11 MK2 -1-8NK2 Chi2= 3.765074-1 Remarques : • Degré entre 3 et 6 (limite pratique) • Mécanisme automatique
Utiliser FAST (suite) Phase 1 : Lors de l’installation Étape 1 : Installer Étape 2 : Étalonner les routines possibles Phase 2 : Pour l’utilisation Étape 3 : Mettre en place la plate-forme Étape 4 : Utiliser FAST
NameServer slapd Forecaster Mémoire Agent Client Senseur Senseur Serveur Serveur Serveur Serveur Senseur Senseur Senseur Senseur Ex. : plate-forme de test pour NetSolve Client Maître … Esclave 1 2 3 n
Mettre en place la plate-forme NWS : NWS ne fournit aucun outil pour la configuration, et lancement, et nous avons un script Perl. LDAP : - Configuration et lancement : template sur ma page - Peupler : ldapadd DiET : ???
L’API FAST FAST masque la complexité à l’ordonnanceur seulement 3 fonctions de haut niveau comm_time(source, destination, data_desc) comp_time(host, problème, data_desc) get_time(host, problème, data_desc, localisation)
Plan • Introduction • Comment utiliser FAST ? • L’API de FAST • Extension parallèle (Freddy – FS et EC) • Quelques résultats expérimentaux • Conclusions et travaux futurs
Un peu de modélisation • Modéliser une application parallèle • Description de l’application • Modélisation de la plate-forme • Différents modèles théoriques • Communications nulles, délai, LogP, … • Supposent une connaissance à priori de la plate-forme d’exécution • Contraire à la « philosophie » de FAST
Modèles utilisés • Modèle +L pour les communications point-à-point • Pour les communications globales • Dépendant de la plate-forme et de la topologie • Fonctions basées sur et (valeurs déterminées par FAST) • Appels à FAST pour les calculs
Simplifications effectuées • Utilisation efficace de ScaLAPACK Processeurs et réseau homogènes • Processeurs homogènes Étalonnage sur un seul processeur • Réseau homogène Surveillance de quelques liens représentatifs
0 1 2 0 1 3 4 5 3 4 0 1 2 0 1 3 4 5 3 4 0 1 2 0 1 Produit de matrices ScaLAPACK N B • Distribution cyclique par blocs bidimensionnelle • Chaque processeur est responsable de ses blocs • A chaque étape • Diffusion des pivots • Multiplication d’un bloc de lignes par un bloc de colonnes K K A C M R
Modélisation avec FAST (1) • Temps de calcul sur une grille (p x q) • temps_dgemm obtenu par l’appel FAST fast_comp_time_best (hôte, dgemm_desc, temps_dgemm) • Tailles des matrices pour l’appel
Modélisation avec FAST (2) • Temps de communication • Cas d’un arbre de diffusion • Remplacement des fonctions par leurs valeurs termes en log • et acquis par appels à FAST fast_bandwidth (source, dest, TAU) fast_latency (source, dest, BETA)
Plan • Introduction • Comment utiliser FAST ? • L’API de FAST • Extension parallèle (Freddy – FS et EC) • Quelques résultats expérimentaux • Séquentiel (FAST) • Parallèle (Freddy) • Conclusions et travaux futurs
Plateforme de tests • On s’intéresse à la qualité des prédictions et non leur impact sur la qualité de l’ordonnancement • Plateforme assez simple, bien qu’hétérogène • Deux machines : • Kwad : serveur de calcul expérimentalQuadriprocesseur Pentium III (550 MHz), Linux 2.4, 512 Mo de RAM • Pixies : machine de bureauPentium II (350 MHz), Linux 2.2, 128 Mo de RAM • Liens Fast Ethernet entre les nœuds
Moyenne : 1% Modélisation temporelle de dgemm
Moyenne : 10% Modélisation temporelle du plus
Modélisation spatiale • Les résultats sont quasi parfaits : • Moins de 1% d’erreur maximale • Erreur moyenne de l’ordre de 0,1% • La taille d’un programme effectuant une opération matricielle est : Taille du code + Taille des matrices (constante) (polynomiale)
Prédiction ? ? Valeur Valeur Ai,Ar,Br Ai,Ar,Bi Ci = Ci1 + Ci2 Cr1=Ar x Br ; Ci1=Ai x Br Cr = Cr1 – Cr2 Cr2=Ai x Bi ; Ci2=Ar x Bi Ci2 Cr1 Ci Cr Prédiction de performances Produit de matrices complexes parallèle : Cr=Ar x Br – Ai x Bi et Ci=Ai x Br + Ar x Bi Lancement du chronomètre Arrêt du chronomètre LDAP NWS Client PIXIES Serveur 1 Serveur 2 KWAD
23% Moyenne: 15% Prédiction de performances :Le produit de matrices complexes
Prédiction de performances :Freddy • Processeurs et réseau homogènes • Taille fixe et forme de grille variable • Grille fixe et taille variable • Matrices identiques et grilles disjointes • Alignement • Grilles virtuelles • Redistributions
Comparatif Erreur max. : 14,7 % Erreur moy. : 3,8 % Mesuré Estimé
Taux d’erreur Grille 8x4
A B Temps (s) Redistributions et calculs
Plan • Introduction • Comment utiliser FAST ? • L’API de FAST • Extension parallèle (Freddy – FS et EC) • Quelques résultats expérimentaux • Conclusions et travaux futurs
Conclusions • Metacomputing prometteur, et sujet de recherche actif • Problème : ordonnancement et estimation de performances • FAST est capable d’estimer les performances de séquences d’opérations en modélisant les opérations simples • Il n’est pas si compliqué à utiliser…
Travaux futurs • Tester pour d’autres opérations • Gérer les opérations parallèles • Diminuer le temps d’étalonnage • Enlever des dépendances, ajouter PCP et autres • Porter sur d’autres plateformes comme SP3 et Sun Entreprise • Coopération accrue avec les équipes de NWS et de NetSolve • Étendre aux réseaux Myrinet, SCI, VIA, etc. • Intégration à DIET