La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CRIHAN - Mars 2001 Outils doptimisation - Page 1 Outils daide à loptimisation scalaire sur Origin 2000 v 2.0 Guy Moebs

Présentations similaires


Présentation au sujet: "CRIHAN - Mars 2001 Outils doptimisation - Page 1 Outils daide à loptimisation scalaire sur Origin 2000 v 2.0 Guy Moebs"— Transcription de la présentation:

1 CRIHAN - Mars 2001 Outils doptimisation - Page 1 Outils daide à loptimisation scalaire sur Origin 2000 v 2.0 Guy Moebs Guy.Moebs@crihan.fr

2 CRIHAN - Mars 2001 Outils doptimisation - Page 2 Plan de la formation 1. Architecture matérielle Origin2000 2. Environnement logiciel 3. Perfex 4. Speedshop 5. Load balancing MPI

3 CRIHAN - Mars 2001 Outils doptimisation - Page 3 1- Architecture matérielle O2000 Architecture O2000 (64 procs) :

4 CRIHAN - Mars 2001 Outils doptimisation - Page 4 Sommet du cube constitué : un routeur deux noeuds Routeur connecté à 4 routeurs voisins Noeud composé : 2 processeurs R10000 un commutateur HUB une mémoire partagée (1 Go) 1- Architecture matérielle O2000 R

5 CRIHAN - Mars 2001 Outils doptimisation - Page 5 1- Architecture matérielle O2000 Le HUB : est connecté aux deux processeurs du noeud, sert d'interface entrées/sorties et connexions avec le reste des processeurs de la machine. La mémoire : est partagée entre les processeurs du noeud, est adressable par l'ensemble des processeurs de la machine.

6 CRIHAN - Mars 2001 Outils doptimisation - Page 6 1- Architecture matérielle O2000 Processeurs type R10000 (MIPS IV) : une fréquence horloge de 195 MHz, une puissance crête/processeur de 390 Mflops, un transfert crête de données vers le cache secondaire de 2.08 gbits/s, deux espaces cache : –un cache primaire d'instructions de 32 Ko et de données de 32Ko, –un cache secondaire de 4 Mo, une mémoire totale de 32 Go.

7 CRIHAN - Mars 2001 Outils doptimisation - Page 7 1- Architecture matérielle O2000 Organisation de la mémoire

8 CRIHAN - Mars 2001 Outils doptimisation - Page 8 1- Architecture matérielle O2000 Temps daccès mémoire

9 CRIHAN - Mars 2001 Outils doptimisation - Page 9 2- Environnement logiciel A. Compilateurs –Déboguage, –Optimisation, –Groupes doptions et manpages utiles. B. Makefile C. Eléments de Fortran 90 –Déclarations, –Allocation dynamique, –Interface.

10 CRIHAN - Mars 2001 Outils doptimisation - Page 10 2- A. Compilateurs : déboguage Options : -O0 : aucune optimisation, -g3 : enrichir la table des symboles, -fullwarn : recevoir tous les messages du compilateurs (-woff pour filtrer), -DEBUG:trap_uninitialized=ON : mise à NaN des variables non initialisées, -DEBUG:subscript_check=ON : vérification des indices des tableaux, -DEBUG:div_check=3 : vérification des divisions et des overflows pour les entiers, -DEBUG:verbose_runtime=ON : numéros des lignes source des erreurs. Bibliothèques : -lfpe : bibliothèque de gestion des exceptions flottantes setenv TRAP_FPE ALLCOUNT;UNDERFLOW=ZERO;OVERFL=TRACE(2),ABORT(2);INVALID=TRACE(2),ABORT(2)

11 CRIHAN - Mars 2001 Outils doptimisation - Page 11 2- A. Compilateurs : optimisation Procéder par étapes, Valider les résultats à chaque étape, Étapes : -O0 : résultats de référence, -O2 : optimisations locales/globales fiables, -O3 -OPT:IEEE_arithmetic=1:roundoff=0 : optimisations plus aggressives, -O3 -OPT:IEEE_arithmetic=3:roundoff=3 : optimisations très aggressives. Utiliser les outils perfex, speedshop, workshop pour étudier les performances après validation des résultats. Quelques règles : –respect la norme du langage, –accès aux données de la même façon quelles sont stockées, –utilisation de bibliothèques scientifiques optimisées.

12 CRIHAN - Mars 2001 Outils doptimisation - Page 12 2- A. Compilateurs : groupes doptions -IPA (inter procedural analysis) : analyse inter-procédurale -LNO (loop nest optimizer) : optimisation des boucles imbriquées -OPT (optimization options) : précision sur les calculs en flottants -DEBUG : déboguage Manpages F77, F90, cc, CC ipa, lno, opt, debug_group mp, pe_environ, sigfpe, handle_sigfpes Options -auto_use mpi_interface -flist, -col120,...

13 CRIHAN - Mars 2001 Outils doptimisation - Page 13 2- B. Compilateurs : Makefile Compilation faite par le compilateur, Outil make permet de gérer la compilation, Makefile = fichier dinstructions pour la commande make, repose sur des targets, des règles de compilation. FC = f90 FFLAGS = -n32 -r10000 -mips4 -O3 LIBS = -lmpi -lfastm OBJS = bloc.o calcul.o erreur.o pmm.o main.o.o.f90: $(FC) $(FFLAGS) <$ -c All: $(OBJS) $(FC) $(LDFLAGS) $(OBJS) -o $(PROG) $(LIBS)

14 CRIHAN - Mars 2001 Outils doptimisation - Page 14 2- C. Eléments de Fortran 90 Déclaration des variables INTEGER, PARAMETER :: n = 10 INTEGER :: ierr = 0 REAL(8), DIMENSION (-n:n, 0:1) :: a, b REAL(4), DIMENSION(:), ALLOCATABLE :: z Allocation dynamique ALLOCATE ( z(n+4*m+2), STAT=ierr) IF ( ierr /= 0 ) STOP ou IF ( ierr == 0 ) THEN … DEALLOCATE ( z ) Interface SUBROUTINE calcul (n,a,b,c) INTEGER, INTENT(IN) :: n REAL(8), INTENT(OUT) :: a REAL(8), INTENT(IN) :: b, c

15 CRIHAN - Mars 2001 Outils doptimisation - Page 15 3- perfex A. compteurs dévénement B. options C. statistiques D. application : produit matriciel

16 CRIHAN - Mars 2001 Outils doptimisation - Page 16 3- A. perfex : compteurs les processeurs R1k000 disposent de compteurs dévènements pour suivre lactivité durant lexécution. quelques compteurs dévènements importants : 7 : quadwords written back from L2 9 : L1 instruction cache misses 10 : L2 instruction cache misses 21 : graduated floating point instructions 22 : quadwords written back from L1 23 : TLB misses (TLB = translation look-aside buffer) 25 : L1 data cache misses 26 : L2 data cache misses deux compteurs peuvent être suivis en même temps => mesure précise de 2 compteurs => mesure partielle puis extrapolation de tous les compteurs (multiplexage)

17 CRIHAN - Mars 2001 Outils doptimisation - Page 17 3- B. perfex : options Perfex [-e e0] [-e e1] [-a] [-mp] [-y] [-x] prog [args] e0, e1 : identifiants dévènements qui doivent appartenir à deux groupes distincts (0-15) et (16-31); -a : multiplexage de tous les évènements; -mp : comptage pour chaque thread et pour lensemble; -y : estimation des temps et statistiques; -x : comptage des exceptions. perfex -a -x -y./s.out perfex -a -x -y [-mp] mpirun -np 4./p.out

18 CRIHAN - Mars 2001 Outils doptimisation - Page 18 3- C. perfex : statistiques Statistiques importantes : Graduated instructions / cycle => proche de 2 Graduated floating point instructions / cycle Graduated loads & stores / cycle Graduated loads & stores / floating point instructions L1 Cache Line Reuse L2 Cache Line Reuse L1 Data Cache Hit Rate => > 0.90 L2 Data Cache Hit Rate Time accessing memory / Total time L1--L2 bandwidth used (MB/s, average per process) Memory bandwidth used (MB/s, average per process) MFLOPS (average per process)

19 CRIHAN - Mars 2001 Outils doptimisation - Page 19 3- D. perfex : application but : Montrer les pertes de performances lorsque les données sont hors des caches principe : Calcul dun produit matrice-matrice démarche : 1) compilation : -O2; 2) étude des performances pour n tel que les 3 tableaux rentrent dans les caches L1, L2 ou la mémoire; cache L1 : 32ko, cache L2 : 1Mo; 4Mo, 8Mo (dépend de larchitecture => hinv) 3 tableaux en double précision : 3x8xnxn octets 3) étude des performances en modifiants lordre des boucles; 4) compilation : -O3; 5) refaire les étapes 2) et 3).

20 CRIHAN - Mars 2001 Outils doptimisation - Page 20 3- D. perfex : application analyse : 1) compteurs dévènements : évolution du classement dimportance selon la valeur de n 2) statistiques : évolution des valeurs des quantités selon la valeur de n 3) comparaison des résultats en -O2 et -O3

21 CRIHAN - Mars 2001 Outils doptimisation - Page 21 3- D. perfex : analyse compilation en -O2 L1 (n = 20), L2 (n = 300) et MEM (n=1000) Based on 195 MHz IP27 MIPS R10000 CPU CPU revision 2.x Typical Minimum Maximum Event Counter Name Counter Value Time (sec) Time (sec) Time (sec) =============================================================================================================== 0 Cycles.................................................. 20896529744 107.161691 107.161691 107.161691 16 Cycles.................................................. 20896529744 107.161691 107.161691 107.161691 25 Primary data cache misses............................... 157632 0.007283 0.002280 0.007283 26 Secondary data cache misses............................. 1312 0.000508 0.000332 0.000565 23 TLB misses.............................................. 16 0.000006 0.000006 0.000006 0 Cycles.................................................. 38046735392 195.111464 195.111464 195.111464 16 Cycles.................................................. 38046735392 195.111464 195.111464 195.111464 25 Primary data cache misses............................... 3499224576 161.682120 50.604171 161.682120 23 TLB misses.............................................. 5637952 1.968657 1.968657 1.968657 26 Secondary data cache misses............................. 413152 0.159964 0.104580 0.177973 0 Cycles.................................................. 21595891808 110.748163 110.748163 110.748163 16 Cycles.................................................. 21595891808 110.748163 110.748163 110.748163 23 TLB misses.............................................. 249980160 87.287944 87.287944 87.287944 25 Primary data cache misses............................... 1318855728 60.937898 19.072683 60.937898 26 Secondary data cache misses............................. 47711120 18.472767 12.077030 20.552482

22 CRIHAN - Mars 2001 Outils doptimisation - Page 22 3- D. perfex : analyse compilation en -O3 L1 (n = 20), L2 (n = 300) et MEM (n=1000) Based on 195 MHz IP27 MIPS R10000 CPU CPU revision 2.x Typical Minimum Maximum Event Counter Name Counter Value Time (sec) Time (sec) Time (sec) =============================================================================================================== 0 Cycles.................................................. 9967721904 51.116523 51.116523 51.116523 16 Cycles.................................................. 9967721904 51.116523 51.116523 51.116523 25 Primary data cache misses............................... 102640 0.004742 0.001484 0.004742 26 Secondary data cache misses............................. 6736 0.002608 0.001705 0.002902 23 TLB misses.............................................. 16 0.000006 0.000006 0.000006 0 Cycles.................................................. 14893075584 76.374747 76.374747 76.374747 16 Cycles.................................................. 14893075584 76.374747 76.374747 76.374747 25 Primary data cache misses............................... 895811520 41.391086 12.954813 41.391086 23 TLB misses.............................................. 78112 0.027275 0.027275 0.027275 26 Secondary data cache misses............................. 40160 0.015549 0.010166 0.017300 0 Cycles.................................................. 1235928224 6.338093 6.338093 6.338093 16 Cycles.................................................. 1235928224 6.338093 6.338093 6.338093 25 Primary data cache misses............................... 73945232 3.416649 1.069362 3.416649 26 Secondary data cache misses............................. 1135920 0.439805 0.287533 0.489319 23 TLB misses.............................................. 44192 0.015431 0.015431 0.015431

23 CRIHAN - Mars 2001 Outils doptimisation - Page 23 3- D. perfex : analyse compilation en -O2/-O3 Statistics L1 L2 MEM n = 20 n = 300 n = 1000 ================================================================================================================= Graduated instructions/cycle............................................ 2.185076 1.710898 0.385768 Graduated floating point instructions/cycle............................. 0.383449 0.353419 0.046896 Graduated loads & stores/cycle.......................................... 0.804269 0.712300 0.127843 Graduated loads & stores/floating point instruction..................... 2.097459 2.015457 2.726113 L1 Cache Line Reuse.....................................................106617.081506 6.744774 1.093389 L2 Cache Line Reuse..................................................... 119.146341 8468.581597 26.642523 L1 Data Cache Hit Rate.................................................. 0.999991 0.870881 0.522306 L2 Data Cache Hit Rate.................................................. 0.991677 0.999882 0.963824 Time accessing memory/Total time........................................ 0.804341 1.551875 1.633047 L1--L2 bandwidth used (MB/s, average per process)....................... 0.079952 581.518247 381.962787 Memory bandwidth used (MB/s, average per process)....................... 0.078700 0.417081 56.276275 MFLOPS (average per process)............................................ 74.772563 68.916666 9.144644 Graduated instructions/cycle............................................ 1.835561 1.824490 1.692755 Graduated floating point instructions/cycle............................. 0.804350 0.906906 0.810151 Graduated loads & stores/cycle.......................................... 0.559774 0.493832 0.441724 Graduated loads & stores/floating point instruction..................... 0.695933 0.544524 0.545236 L1 Cache Line Reuse..................................................... 54360.530320 7.210080 6.383013 L2 Cache Line Reuse..................................................... 14.237530 22305.063745 64.097218 L1 Data Cache Hit Rate.................................................. 0.999982 0.878199 0.864554 L2 Data Cache Hit Rate.................................................. 0.934373 0.999955 0.984638 Time accessing memory/Total time........................................ 0.559917 1.036340 1.052615 L1--L2 bandwidth used (MB/s, average per process)....................... 0.111141 396.560745 397.235215 Memory bandwidth used (MB/s, average per process)....................... 0.059111 0.117584 35.873723 MFLOPS (average per process)............................................ 156.848197 176.846720 157.979467

24 CRIHAN - Mars 2001 Outils doptimisation - Page 24 3- D. perfex : commentaires Loption -O3 permet de conserver les données dans le cache secondaire à laide du cache blocking. Loption -flist permet dobtenir la traduction en Fortran du code optimisé. Loption -O3 active des groupes doption (LNO, OPT,…) qui fournissent des optimisations supplémentaires; gain dun facteur supérieur à 15 ici.

25 CRIHAN - Mars 2001 Outils doptimisation - Page 25 4- speedshop A. ssrun : expériences B. ssrun : types dexpérience C. ssrun : options D. prof : analyse E. prof : options F. application : ADI

26 CRIHAN - Mars 2001 Outils doptimisation - Page 26 4- A. ssrun : expériences ssrun est un outil de profilage : - mesure effectuée durant lexécution du programme, - usage ne nécessite pas de compilation particulière, - appliqué à un programme compilé avec options doptimisation. 2 types dexpérience: - échantillonnage statistique durant lexécution du programme, - comptage exact doccurrence dévènements. ssrun sapplique aux programmes séquentiel et parallèle

27 CRIHAN - Mars 2001 Outils doptimisation - Page 27 4- B. ssrun : type dexpérience léchantillonnage dépend dune base temporelle : –arrêt du programme toutes les 10 ou 1 ms, incrément dun compteur associé à la ligne du code exécutée (-[f]pcsamp[x]); –arrêt du programme toutes les 3 ms, incrément dun compteur associé à toutes les routines de la pile dappels (-usertime). le comptage est lié à un type dévénement : –arrêt du programme lors du débordement de compteur dévènements, incrément dun compteur associé à la ligne du code source (-hwc); –arrêt du programme lors dune exception flottante, incrément dun compteur associé à toutes les routines de la pile dappels (-fpe); –Comptage du temps `idéal` dexécution du code (-ideal).

28 CRIHAN - Mars 2001 Outils doptimisation - Page 28 4- C. ssrun : options ssrun -exp prog [args] exp : type dexpériences; prog : application à analyser. création dun fichier binaire dinformations de la forme progname.expname.D#pid #pid : process id; D : lettre dont la signification est : m : processus master crée par ssrun; p : processus slave OpenMP ( crée par sproc() ); f : processus slave MPI ( crée par fork() ); e : processus slave PVM ( crée par exec() ); s : processus système.

29 CRIHAN - Mars 2001 Outils doptimisation - Page 29 4- D. prof : analyse lecture du(/des) fichier(s) binaire(s) généré(s) par ssrun création dun fichier ascii après analyse fichier global pour lensemble des processus ou fichier individuel

30 CRIHAN - Mars 2001 Outils doptimisation - Page 30 4- E. prof : options prof -options progname.exp.name.D#pid options : -heavy (-h) : résultats affichés pour chaque ligne par ordre décroissant de temps; -lines (-l) : résultats affichés pour chaque ligne par ordre du source; -only (-o) sub : affichage pour la routine sub uniquement; -gprof : ajoute le temps inclusif pour lexpérience -usertime; -q n [%] : tronque l affichage après n lignes ou n %.

31 CRIHAN - Mars 2001 Outils doptimisation - Page 31 4- F. application : ADI but : Montrer les pertes de performances et les localiser. principe : Calcul de contributions dans un tableau 3D, routines xsweep, ysweep et zsweep Démarche : 1) comparer les coûts théoriques des routines avec -ideal; 2) comparer les coûts réels des routines avec -pcsamp; 3) analyser les évènements avec perfex -a -y -x; 4) affiner les valeurs des principaux compteurs avec perfex -e e0; 5) localiser les lignes du source responsables avec ssrun -hwc : setenv SPEEDSHOP HWC_COUNTER_NUMBER compteur setenv SPEEDSHOP HWC_COUNTER_OVERFLOW valeur

32 CRIHAN - Mars 2001 Outils doptimisation - Page 32 4- F. application : ADI résultats de ssrun -ideal par prof -lines : Function list, in descending order by exclusive ideal time ------------------------------------------------------------------------- [index] excl.secs excl.% cum.% cycles instructions calls function (dso: file, line) [1] 0.303 23.2% 23.2% 59080704 59506688 32768 xsweep (adi2: adi2.f90, 70) [2] 0.303 23.2% 46.4% 59080704 59506688 32768 ysweep (adi2: adi2.f90, 90) [3] 0.303 23.2% 69.6% 59080704 59506688 32768 zsweep (adi2: adi2.f90, 110) [4] 0.161 12.3% 81.9% 31457280 27262976 2097152 irand_ (libftn.so: rand_.c, 62) [5] 0.140 10.7% 92.6% 27262976 35651584 2097152 rand_ (libftn.so: rand_.c, 67) [6] 0.082 6.2% 98.9% 15915509 18606275 1 adi2 (adi2: adi2.f90, 1) résultats de ssrun -pcsamp par prof -lines : Function list, in descending order by time ------------------------------------------------------------------------- [index] secs % cum.% samples function (dso: file, line) [1] 6.360 78.1% 78.1% 636 zsweep (adi2: adi2.f90, 110) [2] 0.630 7.7% 85.9% 63 ysweep (adi2: adi2.f90, 90) [3] 0.610 7.5% 93.4% 61 xsweep (adi2: adi2.f90, 70) [4] 0.230 2.8% 96.2% 23 irand_ (libftn.so: rand_.c, 62) [5] 0.180 2.2% 98.4% 18 adi2 (adi2: adi2.f90, 1) [6] 0.120 1.5% 99.9% 12 rand_ (libftn.so: rand_.c, 67) [7] 0.010 0.1% 100.0% 1 _write (libc.so.1: writeSCI.c, 27)

33 CRIHAN - Mars 2001 Outils doptimisation - Page 33 4- F. application : ADI résultats de perfex -a -y -x : Typical Minimum Maximum Event Counter Name Counter Value Time (sec) Time (sec) Time (sec) =============================================================================================================== 0 Cycles.................................................. 1682480768 8.628107 8.628107 8.628107 16 Cycles.................................................. 1682480768 8.628107 8.628107 8.628107 26 Secondary data cache misses............................. 6573952 2.545299 1.664053 2.831856 23 TLB misses.............................................. 5787712 2.020950 2.020950 2.020950 7 Quadwords written back from scache...................... 52204928 1.713393 1.132445 1.713393 25 Primary data cache misses............................... 17305104 0.799585 0.250258 0.799585 22 Quadwords written back from primary data cache.......... 31548640 0.622883 0.508014 0.719956 21 Graduated floating point instructions................... 30801216 0.157955 0.078977 8.213658 9 Primary instruction cache misses........................ 15040 0.001390 0.000434 0.001390 10 Secondary instruction cache misses...................... 544 0.000211 0.000138 0.000234 Statistics ===================================================================================== Graduated instructions/cycle............................................ 0.205890 Graduated floating point instructions/cycle............................. 0.018307 Graduated loads & stores/cycle.......................................... 0.074188 Graduated loads & stores/floating point instruction..................... 4.052416 L1 Cache Line Reuse..................................................... 6.212863 L2 Cache Line Reuse..................................................... 1.632375 L1 Data Cache Hit Rate.................................................. 0.861359 L2 Data Cache Hit Rate.................................................. 0.620115 Time accessing memory/Total time........................................ 0.696089 L1--L2 bandwidth used (MB/s, average per process)....................... 122.685269 Memory bandwidth used (MB/s, average per process)....................... 194.335189 MFLOPS (average per process)............................................ 3.569870

34 CRIHAN - Mars 2001 Outils doptimisation - Page 34 4- F. application : ADI résultats de perfex -e 23 : Summary for execution of./adi2 0 Cycles...................................................... 1317308826 23 TLB misses.................................................. 5779532 résultats de perfex -e 26 : Summary for execution of./adi2 0 Cycles...................................................... 1320793392 26 Secondary data cache misses................................. 6913927 exécution ssrun -hwc : #!/bin/csh setenv _SPEEDSHOP_HWC_COUNTER_NUMBER 23 setenv _SPEEDSHOP_HWC_COOUNTER_OVERFLOW 2053 ssrun -prof_hwc./adi2 setenv _SPEEDSHOP_HWC_COUNTER_NUMBER 26 setenv _SPEEDSHOP_HWC_COUNTER_OVERFLOW 2053 ssrun -prof_hwc./adi2

35 CRIHAN - Mars 2001 Outils doptimisation - Page 35 4- F. application : ADI résultats de ssrun -hwc (23) par prof -heavy : ------------------------------------------------------------------------- Summary of perf. counter overflow PC sampling data (prof_hwc)-- 2816: Total samples TLB misses (23): Counter name (number) 2053: Counter overflow value 5781248: Total counts ------------------------------------------------------------------------- Function list, in descending order by counts ------------------------------------------------------------------------- [index] counts % cum.% samples function (dso: file, line) [1] 5781248 100.0% 100.0% 2816 zsweep (adi2: adi2.f90, 110) 5781248 100.0% 100.0% 2816 TOTAL ------------------------------------------------------------------------- Line list, in descending order by counts ------------------------------------------------------------------------- counts % cum.% samples function (dso: file, line) 2915260 50.4 50.4 1420 zsweep (adi2: adi2.f90, 120) 2831087 49.0 99.4 1379 zsweep (adi2: adi2.f90, 124) 34901 0.6 100.0 17 zsweep (adi2: adi2.f90, 110)

36 CRIHAN - Mars 2001 Outils doptimisation - Page 36 4- F. application : ADI résultats de ssrun -hwc (26) par prof -heavy : ------------------------------------------------------------------------- Summary of perf. counter overflow PC sampling data (prof_hwc)-- 3545: Total samples Secondary cache D misses (26): Counter name (number) 2053: Counter overflow value 7277885: Total counts ------------------------------------------------------------------------- Function list, in descending order by counts ------------------------------------------------------------------------- [index] counts % cum.% samples function (dso: file, line) [1] 6686621 91.9% 91.9% 3257 zsweep (adi2: adi2.f90, 110) [2] 244307 3.4% 95.2% 119 xsweep (adi2: adi2.f90, 70) [3] 236095 3.2% 98.5% 115 ysweep (adi2: adi2.f90, 90) [4] 108809 1.5% 100.0% 53 adi2 (adi2: adi2.f90, 1) 2053 0.0% 100.0% 1 **OTHER** (includes excluded DSOs, rld, etc.) 7277885 100.0% 100.0% 3545 TOTAL ------------------------------------------------------------------------- Line list, in descending order by counts ------------------------------------------------------------------------- counts % cum.% samples function (dso: file, line) 3449040 47.4 47.4 1680 zsweep (adi2: adi2.f90, 120) 3217051 44.2 91.6 1567 zsweep (adi2: adi2.f90, 124) 244307 3.4 95.0 119 xsweep (adi2: adi2.f90, 80) 192982 2.7 97.6 94 ysweep (adi2: adi2.f90, 100)

37 CRIHAN - Mars 2001 Outils doptimisation - Page 37 4- F. application : ADI Analyse : => problème de cache thrashing. - les adresses de stockage de données dans le cache sont calculées par modulo à partir des adresses mémoire; - taille du cache en 2^p, dimensions des tableaux en 2^q; - écrasement des données dans les caches car modulos identiques; Solution : => modifier les premières dimensions des tableaux pour décaler les adresses de stockage dans les caches. integer, parameter :: ldx = 129 integer, parameter :: ldy = 129 integer, parameter :: ldz = 128 integer, parameter :: nx = 128 integer, parameter :: ny = 128 integer, parameter :: nz = 128 real(rp), dimension(ldx, ldy, ldz) :: data

38 CRIHAN - Mars 2001 Outils doptimisation - Page 38 4- F. application : ADI démarche : 6) analyser les évènements avec perfex -a -y -x; 7) affiner les valeurs des principaux compteurs avec perfex -e e0; 8) localiser les lignes du source responsables avec ssrun -hwc.

39 CRIHAN - Mars 2001 Outils doptimisation - Page 39 4- F. application : ADI résultat de perfex -a -y -x Typical Minimum Maximum Event Counter Name Counter Value Time (sec) Time (sec) Time (sec) =============================================================================================================== 0 Cycles.................................................. 711044336 3.646381 3.646381 3.646381 16 Cycles.................................................. 711044336 3.646381 3.646381 3.646381 23 TLB misses.............................................. 5604048 1.956819 1.956819 1.956819 26 Secondary data cache misses............................. 1061616 0.411036 0.268725 0.457312 7 Quadwords written back from scache...................... 6004864 0.197083 0.130259 0.197083 25 Primary data cache misses............................... 4235360 0.195695 0.061250 0.195695 21 Graduated floating point instructions................... 29959296 0.153637 0.076819 7.989146 22 Quadwords written back from primary data cache.......... 6328832 0.124954 0.101910 0.144427 9 Primary instruction cache misses........................ 42816 0.003957 0.001236 0.003957 10 Secondary instruction cache misses...................... 896 0.000347 0.000227 0.000386 Statistics ===================================================================================== Graduated instructions/cycle............................................ 0.456588 Graduated floating point instructions/cycle............................. 0.042134 Graduated loads & stores/cycle.......................................... 0.155101 Graduated loads & stores/floating point instruction..................... 3.681107 L1 Cache Line Reuse..................................................... 25.038722 L2 Cache Line Reuse..................................................... 2.989540 L1 Data Cache Hit Rate.................................................. 0.961596 L2 Data Cache Hit Rate.................................................. 0.749345 Time accessing memory/Total time........................................ 0.858140 L1--L2 bandwidth used (MB/s, average per process)....................... 64.939132 Memory bandwidth used (MB/s, average per process)....................... 63.615036 MFLOPS (average per process)............................................ 8.216172

40 CRIHAN - Mars 2001 Outils doptimisation - Page 40 4- F. application : ADI résultat de perfex -e 23 : Summary for execution of./adi5 0 Cycles...................................................... 592594668 23 TLB misses.................................................. 5565894 résultat de perfex -e 26 : Summary for execution of./adi5 0 Cycles...................................................... 590387057 26 Secondary data cache misses................................. 895611 résultat de ssrun -hwc (23) par prof -heavy ------------------------------------------------------------------------- Function list, in descending order by counts ------------------------------------------------------------------------- [index] counts % cum.% samples function (dso: file, line) [1] 5565683 100.0% 100.0% 2711 zsweep (adi5: adi5.f90, 110) [2] 2053 0.0% 100.0% 1 fake_adi (adi5: adi5.f90, 1) ------------------------------------------------------------------------- Line list, in descending order by counts ------------------------------------------------------------------------- counts % cum.% samples function (dso: file, line) 2855723 51.3 51.3 1391 zsweep (adi5: adi5.f90, 120) 2666847 47.9 99.2 1299 zsweep (adi5: adi5.f90, 124)

41 CRIHAN - Mars 2001 Outils doptimisation - Page 41 4- F. application : ADI Analyse : => problème de TLB thrashing. - chaque entrée dans cette table correspond à une page mémoire adressée - trop de pages différentes sont parcourues; - la table est regénérée en permanence à cause des boucles de calcul. Solution : - stocker le vecteur des données du calcul dans un vecteur temporaire; - routine de copie : do j = 1, ny call copy(data(1,j,1),ldx*ldy,temp,nx,nx,nz) do i = 1, nx call zsweep(temp(i,1),nx,nz) end do call copy(temp,nx,data(1,j,1),ldx*ldy,nx,nz) end do

42 CRIHAN - Mars 2001 Outils doptimisation - Page 42 4- F. application : ADI démarche : 9) analyser les évènements avec perfex -a -y -x.

43 CRIHAN - Mars 2001 Outils doptimisation - Page 43 4- F. application : ADI résultat de perfex -a -y -x Typical Minimum Maximum Event Counter Name Counter Value Time (sec) Time (sec) Time (sec) =============================================================================================================== 0 Cycles.................................................. 473543376 2.428428 2.428428 2.428428 16 Cycles.................................................. 473543376 2.428428 2.428428 2.428428 25 Primary data cache misses............................... 13666112 0.631444 0.197633 0.631444 22 Quadwords written back from primary data cache.......... 23456192 0.463109 0.377705 0.535282 26 Secondary data cache misses............................. 1168832 0.452548 0.295864 0.503497 7 Quadwords written back from scache...................... 7385600 0.242399 0.160211 0.242399 21 Graduated floating point instructions................... 30300896 0.155389 0.077695 8.080239 23 TLB misses.............................................. 65264 0.022789 0.022789 0.022789 9 Primary instruction cache misses........................ 8832 0.000816 0.000255 0.000816 10 Secondary instruction cache misses...................... 768 0.000297 0.000194 0.000331 Statistics ===================================================================================== Graduated instructions/cycle............................................ 0.583375 Graduated floating point instructions/cycle............................. 0.063988 Graduated loads & stores/cycle.......................................... 0.247853 Graduated loads & stores/floating point instruction..................... 3.873448 L1 Cache Line Reuse..................................................... 7.588320 L2 Cache Line Reuse..................................................... 10.692110 L1 Data Cache Hit Rate.................................................. 0.883563 L2 Data Cache Hit Rate.................................................. 0.914472 Time accessing memory/Total time........................................ 0.703613 L1--L2 bandwidth used (MB/s, average per process)....................... 334.625857 Memory bandwidth used (MB/s, average per process)....................... 110.268924 MFLOPS (average per process)............................................ 12.477579

44 CRIHAN - Mars 2001 Outils doptimisation - Page 44 4- F. application : commentaires La comparaison des temps ideal et réel montre une différence importante : un événement extérieur survient; pertes des données dûes au cache thrashing et au TLB thrashing; cache thrashing : les dimensions des tableaux multi- dimensionnels ne doivent pas être des puissances de 2 : => augmentation mémoire généralement légère, => augmentation des performances significative; TLB thrashing : les copies dans des tableaux temporaires peuvent résoudre les pertes de performance; => le compilateur ne sait pas le faire, => cest du ressort du développeur.

45 CRIHAN - Mars 2001 Outils doptimisation - Page 45 5- load balancing MPI A. algorithme B. sous-domaines C. communications D. cvbuild E. cvmake F. portage G. ssaggregate H. application I. comparaison J. conclusions

46 CRIHAN - Mars 2001 Outils doptimisation - Page 46 5- A. load balancing MPI : algorithme problème de Poisson, différences finies 2D méthode itérative de Jacobi schéma à 5 points classique : u(i,j)(n+1)= 0.25 * { u(i+1,j )(n) + u(i-1,j )(n) + u(i,j+1)(n) + u(i,j-1)(n) - h*h*f(i,j) } test darrêt sur la convergence ou nombre max ditérations le domaine initial est coupé en sous-domaines, chaque processus calcule sur son sous-domaine une couche de noeuds fictifs autour de chaque sous- domaines, mises à jour par des communications MPI.

47 CRIHAN - Mars 2001 Outils doptimisation - Page 47 5- B. load balancing MPI : sous-domaines Topologie MPI : mettre une grille de processus sur la grille des sous-domaines.

48 CRIHAN - Mars 2001 Outils doptimisation - Page 48 5- C. load balancing MPI : communications couche de noeuds fictifs (épaisseur 1 noeud) sur les 4 cotés.

49 CRIHAN - Mars 2001 Outils doptimisation - Page 49 5- D. load balancing MPI : cvbuild outil danalyse de dépendance pour la compilation; interrogations sur les targets : menu query.

50 CRIHAN - Mars 2001 Outils doptimisation - Page 50 5- E. load balancing MPI : cvmake outil daide à la compilation; navigation dans le source, derreur en erreur.

51 CRIHAN - Mars 2001 Outils doptimisation - Page 51 5- F. load balancing MPI : portage progresser dans les niveaux doptimisation du programme en comparant les résultats avec des valeurs de référence (code séquentiel puis code parallèle sans optimisation). démarche : -O0 -g3 -DEBUG:… : pas doptimisation, -O2 : optimisations fiables, -O3 -OPT:IEEE_arithmetic=1:roundoff=0 : optimisations aggressives, -O3 -OPT:IEEE_arithmetic=3:roundoff=3 : optimisations très aggressives. valider chaque étape.

52 CRIHAN - Mars 2001 Outils doptimisation - Page 52 5- G. load balancing MPI : ssaggregate outil pour fusionner des fichiers de données issus du même type dexpérience. syntaxe : ssaggregate -e expfile1 expfile2 … -o outputfile analyse faite par prof ssrun sur un code MPI : mpirun -np n ssrun -fpcsampx prog [args] ssrun sur un code OpenMP : setenv OMP _NUM _THREADS n ssrun -fpcsampx prog [args]

53 CRIHAN - Mars 2001 Outils doptimisation - Page 53 5- H. load balancing MPI : application but : étudier le load balancing des calculs sur les processus. principe : profilage du code MPI par ssrun. démarche : 1) compiler le code séquentiel et le code parallèle; 2) lancer les codes sous ssrun -fpcsampx sur le même cas test; 3) comparer les résultats entre les processus MPI; 4) faire la fusion des fichiers et comparer avec le code séquentiel; 5) faire varier la taille du maillage et le nombre de processus (2^p).

54 CRIHAN - Mars 2001 Outils doptimisation - Page 54 5- I. load balancing MPI : indications comparer les temps des différents processus pour une même routine et leur somme avec le temps séquentiel; comparer le temps du processus le plus long avec le temps séquentiel pour évaluer laccélération et lefficacité; accélération : A(p) = T(1) / T(p) efficacité : E(p) = A(p) / p regarder le temps passé en communications par rapport au temps total : overhead MPI

55 CRIHAN - Mars 2001 Outils doptimisation - Page 55 5- I. load balancing MPI : ntx = 200 +-----------+--------+--------+--------++--------+ | ntx = 200 | p0 | p1 | 2p || 1p | +-----------+--------+--------+--------++--------+ | calcul | 7.87 | 11.02 | 18.89 || 24.04 | +-----------+--------+--------+--------++--------+ | erreur | 6.10 | 2.04 | 8.14 || 13.55 | A(2) = 37.70 / 18.88 = 1.99 +-----------+--------+--------+--------++--------+ E(2) = 100% | total | 18.88 | 18.88 | 37.70 || 37.68 | +-----------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------++--------+ | ntx = 200 | p0 | p1 | p2 | p3 | 4p || 1p | +-----------+--------+--------+--------+--------+--------++--------+ | calcul | 4.31 | 4.18 | 3.76 | 4.86 | 17.11 || 24.04 | +-----------+--------+--------+--------+--------+--------++--------+ | erreur | 1.83 | 2.24 | 3.00 | 3.02 | 10.09 || 13.55 | A(4) = 3.37 +-----------+--------+--------+--------+--------+--------++--------+ E(4) = 84% | total | 11.13 | 11.15 | 11.16 | 11.16 | 44.67 || 37.68 | +-----------+--------+--------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | ntx = 200 | p0 | p1 | p2 | p3 | p4 | p5 | p6 | p7 | 8p || 1p | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | calcul | 3.01 | 2.76 | 2.02 | 2.59 | 2.45 | 2.42 | 2.39 | 2.51 | 20.15 || 24.04 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | erreur | 1.51 | 1.17 | 1.98 | 1.47 | 1.44 | 1.66 | 1.33 | 0.99 | 11.55 || 13.55 | A(8) = 3.95 +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ E(8) = 49% | total | 9.53 | 9.50 | 9.52 | 9.54 | 9.53 | 9.55 | 9.54 | 9.55 | 76.35 || 37.68 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+

56 CRIHAN - Mars 2001 Outils doptimisation - Page 56 5- I. load balancing MPI : ntx = 400 +-----------+--------+--------+--------++--------+ | ntx = 400 | p0 | p1 | 2p || 1p | +-----------+--------+--------+--------++--------+ | calcul | 40.38 | 41.12 | 81.50 || 164.47 | +-----------+--------+--------+--------++--------+ | erreur | 20.87 | 21.43 | 42.30 || 129.91 | A(2) = 4.05 +-----------+--------+--------+--------++--------+ E52) = 202% | total | 71.66 | 71.71 | 143.39 || 290.54 | +-----------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------++--------+ | ntx = 400 | p0 | p1 | p2 | p3 | 4p || 1p | +-----------+--------+--------+--------+--------+--------++--------+ | calcul | 19.15 | 23.76 | 19.58 | 20.62 | 83.11 || 164.47 | +-----------+--------+--------+--------+--------+--------++--------+ | erreur | 9.78 | 11.67 | 8.95 | 9.37 | 39.77 || 129.91 | A(4) = 6.95 +-----------+--------+--------+--------+--------+--------++--------+ E(4) = 125% | total | 41.81 | 41.78 | 41.81 | 41.78 | 167.23 || 290.54 | +-----------+--------+--------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | ntx = 400 | p0 | p1 | p2 | p3 | p4 | p5 | p6 | p7 | 8p || 1p | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | calcul | 9.83 | 10.12 | 9.78 | 9.63 | 10.38 | 10.25 | 9.36 | 9.50 | 78.85 || 164.47 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | erreur | 3.53 | 4.82 | 5.00 | 5.27 | 3.93 | 6.79 | 6.23 | 4.81 | 40.38 || 129.91 | A(8) = 13.02 +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ E(8) = 163% | total | 22.27 | 22.33 | 22.28 | 22.31 | 22.29 | 22.33 | 22.31 | 22.31 | 178.52 || 290.54 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+

57 CRIHAN - Mars 2001 Outils doptimisation - Page 57 5- I. load balancing MPI : ntx = 800 +-----------+--------+--------+--------++--------+ | ntx = 800 | p0 | p1 | 2p || 1p | +-----------+--------+--------+--------++--------+ | calcul | 329.30 | 328.56 | 657.86 || 674.17 | +-----------+--------+--------+--------++--------+ | erreur | 257.46 | 256.44 | 513.90 || 496.73 | A(2) = 1.94 +-----------+--------+--------+--------++--------+ E(2) = 97% | total | 604.66 | 604.67 |1209.35 ||1171.25 | +-----------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------++--------+ | ntx = 800 | p0 | p1 | p2 | p3 | 4p || 1p | +-----------+--------+--------+--------+--------+--------++--------+ | calcul | 84.96 | 85.27 | 84.02 | 90.33 | 344.58 || 674.17 | +-----------+--------+--------+--------+--------+--------++--------+ | erreur | 46.69 | 46.74 | 46.34 | 47.04 | 186.81 || 496.73 | A(4) = 7.95 +-----------+--------+--------+--------+--------+--------++--------+ E(4) = 199% | total | 147.36 | 147.36 | 147.36 | 147.39 | 589.50 ||1171.25 | +-----------+--------+--------+--------+--------+--------++--------+ +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | ntx = 800 | p0 | p1 | p2 | p3 | p4 | p5 | p6 | p7 | 8p || 1p | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | calcul | 39.63 | 40.13 | 42.12 | 41.63 | 41.45 | 38.52 | 56.89 | 40.44 | 340.81|| 674.17 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ | erreur | 20.94 | 21.45 | 21.27 | 20.71 | 20.37 | 20.50 | 29.45 | 21.11 | 175.80|| 496.73 | A(8) = 11.61 +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+ E(8) = 145% | total | 100.90 | 100.87 | 100.89 | 100.87 | 100.82 | 100.87 | 100.76 | 100.92 | 806.96||1171.25 | +-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------++--------+

58 CRIHAN - Mars 2001 Outils doptimisation - Page 58 5- I. load balancing MPI : conclusions nombre de processus doit être adapté à la masse de calcul; temps de calcul significatif pour que les imprécisions des mesures soient petites (charge de la machine !); temps parallèle inférieur au temps séquentiel car plusieurs processus signifient aussi : –plusieurs cache L2 donc volume de cache multiplié; –données distribuées sur plusieurs mémoires locales, donc accès plus courts; overhead des communications à suivre.


Télécharger ppt "CRIHAN - Mars 2001 Outils doptimisation - Page 1 Outils daide à loptimisation scalaire sur Origin 2000 v 2.0 Guy Moebs"

Présentations similaires


Annonces Google