calcul scientifique parallele` algebre lin` eaire dense´modave/ams301/slidescours3.pdfi temps...
TRANSCRIPT
0
.
Calcul Scientifique ParalleleCours AMS301 — Automne 2020 — Cours 3
Analyse de la performance parallele
Algebre lineaire dense
Axel Modave
Analyse de la performance parallele
Algebre lineaire dense
Analyse de la performance parallele
Quelle acceleration peut-on espereren parallelisant un algorithme ?
Criteres de qualite pour un algorithme parallele ?Le meilleur algorithme est celui qui ...
– minimise le temps d’excecution,
– (en general) tire parti de la puissance de calcul de tous les nœuds,
– (en general) minimise les communications et les temps d’attente.
Quantifier la performance . . .– Un bon modele de performance doit expliquer l’observable et prevoir le futur.
– Il repose sur des metriques, fonctions des parametres du probleme.
1
Performance — Metriques [1/3]
L’acceleration A [speedup] mesure le facteur de reduction du temps d’execution d’un
algorithme donne par l’utilisation d’une machine a P processeurs :
A =Tsequentiel
Tparallele
2 [0, P ]
Quelles accelerations et efficacites peut-on esperer ?Illustration sur un probleme donne avec differentes tailles :
P 1 2 4 8 16
Taille normale A 1.0 1.9 3.1 4.8 6.2
Taille ⇥ 2 A 1.0 1.9 3.6 6.5 10.8
Taille ⇥ 4 A 1.0 1.9 3.8 7.5 14.2
Des operations qui doivent se faire de facon sequentielle empechent d’attendre
l’acceleration maximale. Une borne maximale est donnee par la loi d’Amdahl.
2
Performance — Loi d’Amdahl
Loi d’Amdahl
Si la composante sequentielle irreductible (non-parallelisable) d’un algorithme
contribue pour une fraction � au temps d’execution du programme sequentiel,
alors l’acceleration maximale qui peut etre obtenue en parallele est A = 1/�.
Illustration avec � = 1/5 et Tsequentiel = 100 sec
Communications A1-1 2014/2015
Aspects théoriques et algorithmiques du calcul réparti 31
Modèle de performance (10/10)
• Exemple avec a = 1/5 et T = 100 s en séquentiel :
0
20
40
60
80
100
120
1 2 4 16 256 infini0
1
2
3
4
5
6
1 2 4 16 256 infini
Temps d’exécution en secondes Accélération
Communications A1-1 2014/2015
Aspects théoriques et algorithmiques du calcul réparti 32
Gestion des communications (1/4)
• Grille bidimensionnelle : parallélisation des communications
– schéma à 5 points,
– 36 sous-domaines,
– 1 grille de processeurs et 1 sous-domaine par processeur.
Communications A1-1 2014/2015
Aspects théoriques et algorithmiques du calcul réparti 31
Modèle de performance (10/10)
• Exemple avec a = 1/5 et T = 100 s en séquentiel :
0
20
40
60
80
100
120
1 2 4 16 256 infini0
1
2
3
4
5
6
1 2 4 16 256 infini
Temps d’exécution en secondes Accélération
Communications A1-1 2014/2015
Aspects théoriques et algorithmiques du calcul réparti 32
Gestion des communications (1/4)
• Grille bidimensionnelle : parallélisation des communications
– schéma à 5 points,
– 36 sous-domaines,
– 1 grille de processeurs et 1 sous-domaine par processeur.
Temps d’execution Tparallele (en sec) Acceleration A
3
Performance — Metriques [2/3]
L’efficacite E [efficiency] est le rapport entre l’acceleration et l’acceleration optimale :
E =A
P=
Tsequentiel
P · Tparallele
2 [0, 1]
Illustration sur un probleme donne avec differentes tailles :
P 1 2 4 8 16
Taille normale A 1.0 1.9 3.1 4.8 6.2
E 1.0 0.95 0.78 0.60 0.32
Taille ⇥ 2 A 1.0 1.9 3.6 6.5 10.8
E 1.0 0.95 0.90 0.81 0.68
Taille ⇥ 4 A 1.0 1.9 3.8 7.5 14.2
E 1.0 0.95 0.95 0.94 0.894
Performance — Metriques [3/3]
Scalabilite [scalability/scaling] d’une methode parallele = Capacite a conserver la
meme efficacite lorsqu’un plus grand nombre de processeurs est utilise.
I Scalabilite forte [strong scalability] : On analyse l’efficacite pour un probleme
dont la taille est fixe, avec un nombre de processeurs qui augmente.
Avec 2⇥ plus de processeurs, puis-je resoudre un probleme donne 2⇥ plus rapidement ?
I Scalabilite faible [weak scalability] : On analyse l’efficacite avec un probleme
dont la taille augmente lineairement avec la nombre de processeurs.
Avec 2⇥ plus de processeurs, puis-je resoudre un probleme 2⇥ plus gros en autant de temps ?
Suggestion de presentation pour etudier la scalabilite faible/forte :
Attention : la taille du probleme est constante dans le premier cas, et augmente
lineairement avec le nombre de processeurs dans le deuxieme cas.5
Performance — Temps d’execution et de communication
I Temps d’execution T [run time] d’un programme parallele : temps ecoule entre
l’instant ou le premier processeur commence a travailler et l’instant ou le dernier
processeur finit de travailler.
Le temps d’execution est contraint par le nœud le plus lent :
T ⇡ maxnhTcal|n + Tcomm|n + Tattente|n
i
avec, pour chaque un nœud n = 1 . . . P ,
– Tcal|n : temps passe a calculer
– Tcomm|n : temps passe a communiquer
– Tattente|n : temps perdu a attendre
Idee pour reduire T : superposer les calculs et les communications (si possible)
I Le temps de communication Tcomm [communication time] d’un message :
Tcomm ⇡ Tlat + L Tmot
avec
– Tlat : temps de latence (independant de la taille du message)
– Tmot : temps de tansfert d’un mot
– L : taille du message (en nombre de mots)
6
Performance — Analyse des comm. avec une grille reguliere [1/5]
Voici une grille structuree ...
Comment partitionner cette grille ?
7
Performance — Analyse des comm. avec une grille reguliere [2/5]
Le partitionnement d’un maillage (grille structuree ou maillage non-structure)
peut se faire de deux facons differentes :
I par sous-ensembles de nœuds, en utilisant le graphe primal du maillage :
• nœud du graphe = nœud du maillage
• arete du graphe = arete du maillage
I par sous-ensembles d’elements, en utilisant le graphe dual du maillage :
• nœud du graphe = element du maillage
• arete du graphe = connectivite du maillage
Maillage Graphe primal Graphe dual
8
Performance — Analyse des comm. avec une grille reguliere [3/5]
Plusieurs partitions possibles ...
Partitionnement 1D Partitionnement 2D
La gestion et la taille des communications est differentes !
Intuitivement, on a utilise la methode des coordonnees.
9
Performance — Analyse des comm. avec une grille reguliere [4/5]
On considere des p-partitions d’une grille bidimensionnelle de taille N ⇥N
Partitionnement 1D Partitionnement 2D
Par sous-domaine ... 1D 2D
Quantite de donnees transferees O(2N) O(4N/pP ) O(N)
Quantite d’operations O(N2/P ) O(N2/P ) O(N2)
Rapport transferts / operations O(2P/N) O(4pP/N)
10
Performance — Analyse des comm. avec une grille reguliere [5/5]
On considere des p-partitions d’une grille tridimensionnelle de taille N ⇥N ⇥N
Par sous-domaine ... 1D 2D 3D
Quantite de donnees transferees O(2N2) O(4N2/P 1/2) O(6N2/P 2/3) O(N2)
Quantite d’operations effectuees O(N3/P ) O(N3/P ) O(N3/P ) O(N3)
Rapport transferts / operations O(2P/N) O(4P 1/2/N) O(6P 1/3/N)
AnalyseI Les communications sont proportionnelles a la surface du sous-domaine,
tandis que les calculs sont proportionnels a son volume.
I Augmenter le nombre de sous-domaines diminue les calculs par sous-domaine,
mais augmente l’importance des communications. (effet surface% )
I Pour un grand nombre de sous-domaines, il est interessant d’utiliser une partition
a dimensionnalite elevee. (effet surface& )
11
Analyse de la performance parallele
Algebre lineaire dense
Operations d’algebre lineaire
Motivation
Operations d’algebre lineaire = Briques de base de beaucoup d’algorithmes
) Besoin de bonnes implementations paralleles pour ces operations.
Algorithmes differents en fonction des structures des matrices :
— Matrices denses sans structure
— Matrices symetriques ou hierarchiques (ex. FFT)
— Matrices creuses structurees (ex. issues de discretisation par differences finies)
— Matrices creuses non-structurees (ex. issues de discret. par elements finis)
BLAS (Basic Linear Algebra Subroutines)
Operations d’algebre lineaire dense classees selon leur complexite algorithmique :
— O(N) operations : produit scalaire, addition de vecteurs BLAS 1
— O(N2) operations : produit matrice-vecteur, addition de matrices BLAS 2
— O(N3) operations : produit matriciel BLAS 3
Des librairies BLAS optimisees existent pour la plupart des environnements (CPU/GPU).
Elles reposent sur une partition des vecteurs/matrices en blocs.
Objectif de cette partie : Parallelisation du produit matriciel.
12
Parallelisation du produit matriciel
On souhaite calculer le produit de deux matrices A = BC avec B et C 2 RN⇥N
en parallele avec P processus (par simplicite, on suppose N multiple de P ).
Algorithme sequentiel
A 0
for i = 1, . . . , N dofor j = 1, . . . , N do
for k = 1, . . . , N doAij Aij + BikCkj
endend
end
Analyse des boucles :
I Boucles en i et j : iterations independantes
I Boucle en k : iterations dependantes (accumulation de valeurs calculees)
Du coup, on va repartir les iterations en i et j entre les processus.
Plusieurs choix possibles !
13
Parallelisation du produit matriciel — Avec 2 processus [1/2]
Premiere approche
Algorithme parallele avec 2 processus
Sur chaque processus p = 1, 2 :Ap 0
istart (p� 1)N/2 + 1
iend (p� 1)N/2
for i = istart, . . . , iend dofor j = 1, . . . , N do
for k = 1, . . . , N doAij Aij + BikCkj
endend
end
14
DiscussionI Pas de communication entre les
processus
I Chaque processus p : calcule Ap,
stocke Bp, stocke C entierement
Parallelisation du produit matriciel — Avec 2 processus [2/2]
Meilleure approche
DiscussionI Tous les processus ont besoin de tous les blocs de C, mais pas au meme
moment. Ils sont repartis entre les processus, puis echanges.
I A chaque etape, chaque bloc n’est stocke qu’une fois en memoire.
Repartition parfaite des calculs et des donnees ! 15
Parallelisation du produit matriciel — Avec 4 processus [1/3]
Partitionnement en blocs “lignes” (extension immediate du cas a 2 processus)
DiscussionI Chaque processus calcule N2/4 valeurs de A (N/4 lignes).
I A chaque etape, le processus p :
• calcule un bloc de A en utilisant un bloc “colonnes” de C.
• envoie ce bloc “colonnes” de C au proc. p� 1 (ou au dernier proc.)
• recoit un nouveau bloc “colonnes” de C du proc. p+ 1 (ou du premier proc.)
I Besoin de 4 etapes, avec 4 communications a chaque etape (blocs de taille N2/4)
Repartition parfaite des calculs et quasi-parfaite des donnees !
16
Parallelisation du produit matriciel — Avec 4 processus [2/3]
Partitionnement en blocs “carres”
17
Parallelisation du produit matriciel — Avec 4 processus [3/3]
Partitionnement en blocs “carres”
DiscussionI Chaque processus calcule N2/4 valeurs de A.
I Besoin de 2 etapes, avec 4 communications a chaque etape (blocs de taille N2/4)
Repartition parfaite des calculs et quasi-parfaite des donnees !
Au total, 2⇥moins de communications que la version precedente !
18
Parallelisation du produit matriciel — Avec P = N2blk
processus [1/2]
Les matrices A, B et C sont partitionnees en Nblk ⇥Nblk blocs :
2
64A11 A12 A13
A21 A22 A23
A31 A32 A33
3
75 =
2
64B11 B12 B13
B21 B22 B23
B31 B32 B33
3
75
2
64C11 C12 C13
C21 C22 C23
C31 C32 C33
3
75
Premiere approcheChaque processus (I, J) calcule AIJ , avec I, J = 1, . . . , Nblk.
Algorithme parallele avec P = N2blk
processus (si memoire accessible partout)
Sur chaque processus (I, J) (avec I, J = 1, . . . , Nblk) :AIJ 0
for K = 1, . . . , Nblk doAIJ AIJ +BIKCKJ
end
19
Parallelisation du produit matriciel — Avec P = N2blk
processus [2/2]
Meilleure approcheChaque processus (I, J) stocke BIJ et CIJ et calcule AIJ , avec I, J = 1, . . . , Nblk.
Algorithme parallele avec P = N2blk
processus (moins de stockage)
Sur chaque processus (I, J) (avec I, J = 1, . . . , Nblk) :AIJ 0
for K = 1, . . . , Nblk doSi K 6= J : Recevoir BIK du processus (I,K) et stocker dans Btmp
Si K 6= I : Recevoir CKJ du processus (K, J) et stocker dans Ctmp
Si K = J : Envoyer BIJ aux autres processus (I, •) et Btmp = BIJ
Si K = I : Envoyer CIJ aux autres processus (•, J) et Ctmp = CIJ
AIJ AIJ +BtmpCtmp
end
DiscussionI Chaque processus calcule N2/N2
blkvaleurs de A.
I Besoin de Nblk etapes au total, 2Nblk blocs sont envoyes avec des
communications globales, mais pas sur l’ensemble du reseau.
A l’etape K : BIK pour I = 1 . . . P et CKJ pour J = 1 . . . P
Repartition parfaite des calculs et quasi-parfaite des donnees ! 20
Summary
I Parallel performance• Speedup, efficiency, Amdahl’s law
• Strong/weak scaling
• Run time, communication time, latency
• Surface/Volume effect
• 1D/2D/3D partitionning
I Dense linear algebra• BLAS 1, 2 and 3
• Parallel algorithm for 2, 4 and N2blk
processes
• Approach by block
• Easy and efficient parallelism!