Outils d - PowerPoint PPT Presentation

About This Presentation
Title:

Outils d

Description:

sert d'interface entr es/sorties et connexions avec le reste des processeurs de ... identifiants d' v nements qui doivent appartenir deux groupes distincts (0 ... – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 59
Provided by: guym3
Category:

less

Transcript and Presenter's Notes

Title: Outils d


1
Outils daide àloptimisation scalairesur
Origin 2000v 2.0Guy MoebsGuy.Moebs_at_crihan.fr
2
Plan de la formation
  • 1. Architecture matérielle Origin2000
  • 2. Environnement logiciel
  • 3. Perfex
  • 4. Speedshop
  • 5. Load balancing MPI

3
1- Architecture matérielle O2000
  • Architecture O2000 (64 procs)

4
1- Architecture matérielle O2000
  • 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)

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
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
1- Architecture matérielle O2000
  • Organisation de la mémoire

8
1- Architecture matérielle O2000
  • Temps daccès mémoire

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
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),
  • -DEBUGtrap_uninitializedON mise à NaN des
    variables non initialisées,
  • -DEBUGsubscript_checkON vérification des
    indices des tableaux,
  • -DEBUGdiv_check3 vérification des divisions
    et des overflows pour les entiers,
  • -DEBUGverbose_runtimeON numéros des lignes
    source des erreurs.
  • Bibliothèques
  • -lfpe bibliothèque de gestion des exceptions
    flottantes
  • setenv TRAP_FPE
  • ALLCOUNTUNDERFLOWZEROOVERFLTRACE(2),ABORT(2)
    INVALIDTRACE(2),ABORT(2)

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 -OPTIEEE_arithmetic1roundoff0
    optimisations plus aggressives,
  • -O3 -OPTIEEE_arithmetic3roundoff3
    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
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
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
  • ltTABgt(FC) (FFLAGS) lt -c
  • All (OBJS)
  • ltTABgt(FC) (LDFLAGS) (OBJS) -o (PROG) (LIBS)

14
2- C. Eléments de Fortran 90
  • Déclaration des variables
  • INTEGER, PARAMETER n 10
  • INTEGER ierr 0
  • REAL(8), DIMENSION (-nn, 01) a, b
  • REAL(4), DIMENSION(), ALLOCATABLE z
  • Allocation dynamique
  • ALLOCATE ( z(n4m2), STATierr)
  • 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
3- perfex
  • A. compteurs dévénement
  • B. options
  • C. statistiques
  • D. application produit matriciel

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
  • gt mesure précise de 2 compteurs
  • gt mesure partielle puis extrapolation de tous
    les compteurs (multiplexage)

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
3- C. perfex statistiques
  • Statistiques importantes
  • Graduated instructions / cycle gt 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 gt gt 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
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 gt 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
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
3- D. perfex analyse compilation en -O2
  • L1 (n 20), L2 (n 300) et MEM (n1000)

  • 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

22
3- D. perfex analyse compilation en -O3
  • L1 (n 20), L2 (n 300) et MEM (n1000)

  • 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

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

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
4- speedshop
  • A. ssrun expériences
  • B. ssrun types dexpérience
  • C. ssrun options
  • D. prof analyse
  • E. prof options
  • F. application ADI

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
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 (-fpcsampx)
  • 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
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.Dpid
  • 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
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
4- E. prof options
  • prof -options progname.exp.name.Dpid
  • 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
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
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)

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

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

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)

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

37
4- F. application ADI
  • Analyse
  • gt 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 2p, dimensions des tableaux
    en 2q
  • - écrasement des données dans les caches car
    modulos identiques
  • Solution
  • gt 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
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
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

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)

41
4- F. application ADI
  • Analyse
  • gt 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),ldxldy,temp,n
    x,nx,nz)
  • do i 1, nx
  • call zsweep(temp(i,1),nx,nz)
  • end do
  • call copy(temp,nx,data(1,j,1),ldxld
    y,nx,nz)
  • end do

42
4- F. application ADI
  • démarche
  • 9) analyser les évènements avec perfex -a -y -x.

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

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
  • gt augmentation mémoire généralement légère,
  • gt augmentation des performances significative
  • TLB thrashing les copies dans des tableaux
    temporaires peuvent résoudre les pertes de
    performance
  • gt le compilateur ne sait pas le faire,
  • gt cest du ressort du développeur.

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
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)(n1) 0.25 u(i1,j )(n) u(i-1,j
    )(n)
  • u(i ,j1)(n) u(i
    ,j-1)(n)
  • - hhf(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
5- B. load balancing MPI sous-domaines
  • Topologie MPI mettre une grille de processus
    sur la grille des sous-domaines.

48
5- C. load balancing MPI communications
  • couche de noeuds fictifs (épaisseur 1 noeud) sur
    les 4 cotés.

49
5- D. load balancing MPI cvbuild
  • outil danalyse de dépendance pour la
    compilation
  • interrogations sur les targets menu query.

50
5- E. load balancing MPI cvmake
  • outil daide à la compilation
  • navigation dans le source, derreur en erreur.

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 -OPTIEEE_arithmetic1roundoff0
    optimisations aggressives,
  • -O3 -OPTIEEE_arithmetic3roundoff3
    optimisations très aggressives.
  • valider chaque étape.

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
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 (2p).

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
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
  • --------------------------------------------
    ---------------
  • --------------------------------------------
    --------------------------------------------
    ---

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
  • --------------------------------------------
    ---------------
  • --------------------------------------------
    --------------------------------------------
    ---

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
  • --------------------------------------------
    ---------------
  • --------------------------------------------
    --------------------------------------------
    ---

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.
Write a Comment
User Comments (0)
About PowerShow.com