1.06k likes | 1.26k Views
Modèles de Parallélisme. Modèles de traitement parallèle. Trois types de modèles : Modèles Graphes (DAG : Directed Acyclic Graph) Modèle à mémoire partagée PRAM Parallel Random Access Machine Deux modes d’opération d’une Machine PRAM
E N D
Modèles de traitement parallèle Trois types de modèles : • Modèles Graphes (DAG : Directed Acyclic Graph) • Modèle à mémoire partagée PRAM • Parallel Random Access Machine • Deux modes d’opération d’une Machine PRAM • Synchorne : tous les processeurs sont contrôlés par une horloge commune • Asynchrone : chaque processeur est contrôle par une horloge dédiée • Modèle Réseau • Mémoire distribuée • Processeurs communiquent par échange de messages
Traitement Parallèle Modèles Graphes
Modèles Graphes Ceci sera fait • en TD et • par des exemples dans d’autres parties du cours
Traitement Parallèle Modèles PRAM
Modèle PRAM • Classification de différentes architectures parallèles PRAM • Flynn propose une classification basée sur deux critères : • Flux des données • Flux des instructions • Chaque flux peu être : • Unique (Single) • Multiple
Modèle PRAM • Classification de Flynn Flux de données Flux d’Instructions
Mémoire Globale (Shared – Memory) P1 P2 Pp Modèle PRAM • Une extension simple du modèle classique RAM (Random Access Memory) pour prendre en compte la multiplicité de processeurs
Modèle PRAM Propriétés • p Processeurs ayant chacun une mémoire locale (non accessible aux autres processeurs) • Une Mémoire Globale (Shared-Memory) partagée par tous les processeurs • Chaque processeur a un indexe (une identité) i (0 i p-1 qui peut être utilisé dans les comparaisons logiques ou les calculs d'adresses
Modèle PRAM Deux modes d'opération du modèle PRAM : • Synchrone • Les processeurs évoluent de manière synchronisée sous le contrôle d'une horloge commune. A chaque étape (unité de temps), les processeurs actifs exécutent une instruction sur des données (déterminées selon les indexes des processeurs) FA chaque étape, certains processeurs sont inactifs FCe mode est adapté aux architecture de type SIMD, MIMD • Asynchrone • Chaque processeur évolue sous le contrôle d'une horloge locale. Le programmeur doit inclure des points de synchronisation quand nécessaire pour coordonner les activités des processeurs. FPlutôt adapté aux architectures MIMD
Modèle PRAM • Exemple d'opération en MODE SYNCHRONE • Exécuter en mode synchrone sur une machine parallèle à 4 processeurs, l'instruction suivante : Algorithme : Processeur i Input : (1) A, B (2) i, identité du processeur Output : (1) C Begin If ( B==0) C = A Else C = A/B End
Etape 1 Processeur 0 Processeur 1 Processeur 2 Processeur 3 A : 5 B : 0 C : 5 (Actif, B=0) A : 4 B : 2 C : 0 (Inactif, B0) A : 2 B : 1 C : 0 (Inactif, B0) A : 7 B : 0 C : 7 (Actif, B=0) Etape 2 Processeur 0 Processeur 1 Processeur 2 Processeur 3 A : 5 B : 0 C : 5 (Inactif, B=0) A : 4 B : 2 C : 2 (Actif, B0) A : 2 B : 1 C : 2 (Actif, B0) A : 7 B : 0 C : 7 (Inactif, B=0) Modèle PRAM Initial Processeur 0 Processeur 1 Processeur 2 Processeur 3 A : 5 B : 0 C : 0 A : 4 B : 2 C : 0 A : 2 B : 1 C : 0 A : 7 B : 0 C : 0
Modèle PRAM Quatre variantes du Modèle PRAM : selon le type d'accès simultané à une même adresse mémoire ou un bloc de mémoire • EREW : Exclusive - Read, Exclusive -Write • Les accès simultanés ( en lecture ou écriture) à une adresse mémoires sont interdits • CREW : Concurrent – Read, Exclusive – Write • Accès simultanés autorisés en lecture • Accès exclusif en écriture (une seule écriture à la fois à la même adresse)
Modèle PRAM • CRCW : Concurrent – Read, Concurrent – Write • Accès simultanés en lecture • Accès simultanés en écriture • ERCW : Exclusive Read – Concurrent Write • Problèmes d'écritures concurrentes • Qu'est ce qu'on écrit dans une adresse mémoire en cas d'écritures concurrentes?
Modèle PRAM Résolution des problèmes d'écritures concurrentes dans le modèle CRCW ( m processeurs en écriture sur une variable X) : • Common CRCW : les écritures concurrentes sont autorisées si les valeurs écrites par les m processeurs sont égales • SUM CRCW : la somme des valeurs est écrite dans X • Random CRCW : un processeur est choisi au hasard et autorisé à eécrire sa valeur dans X. Les autres écritures échouent (terminent sans écrire) • Priority CRCW : Une priorité est associée à chaque processeur. Le processeur de plus forte priorité est autorisé à écrire X. Les autres écritures échouent (terminent sans écrire)
Modèle PRAM Exemple : Soit P1 (50 X) , P2 (60 X), P3 (70 X) des demandes d’écritures simultanées sur une variable X : • Common CRCW ou ERCW : ECHEC • SUM CRCW : la somme (180) des valeurs est écrite dans X • Random CRCW : un processeur est choisi au hasard et autorisé à eécrire sa valeur dans X. Les autres écritures échouent (terminent sans écrire) X { 50, 60, 70 } • Priority CRCW : Une priorité est associée à chaque processeur. Le processeur de plus forte priorité est autorisé à écrire X. Les autres écritures échouent (terminent sans écrire) SI P1 a la plus forte priorité, alors x = 50
Modèle PRAM Instructions spéciales pour lire et écrire en mémoire globale • Global read (X, x) • Global write (Y, y)
Mémoire Globale A1,1 A1,2 … A1,n A2,1 A2,2 … A2,n …….. A n,1 An,2 ... An,n X1 X2 …. Xn Y1 Y2 …. Yn X = P1 P2 Pp Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur • Produit Matrice-Vecteur Y = AX • A est une matrice n x n, X un vecteur de taille n • p processeurs opérant en mode asynchrone, pn et r = n/p
Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur • Principe de la solution • Partitionner les données en blocs ou partitions. Chaque processeur calcule des résultats partiels sur une partition • Combiner les résultats partiels • Comment partitionner le calcul de Y = AX?
A1,1 A1,2 … A1,n ……. Ar,1 A2,2 … A2,n ……. A(p-1)r,1 A(p-1),2 … A(p-1),n …….. A pr,1 Apr,2 ….Apr,n r lignes A1 Ap A1 A2 …. Ap = A = r lignes Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A • La matrice A est découpée horizontalement en p blocs Ai,* (sous matrices) de r lignes • Processeur Pi calcule le produit matriciel partiel Yi = Ai * X
A1,1 A1,2 … A1,n ……. Ar,1 A2,2 … A2,n Y1 Y2 …. Yr X1 X2 …. Xn X1 X2 …. Xn X1 X2 …. Xn X X X P1 Yr+1 Yr+2 …. Y2r P2 Ar+1,1 Ar+1,2 … Ar+1,n ……. A2r,1 A2r,2 … A2r,n Y(p-1)r+1 Y(p-1)r+2 …. Ypr Pp A(p-1)r,1 A(p-1)r,2 …A(p-1)r,n ……. Apr,1 Apr,2 … Apr,n Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A • Processeur Pi calcule le produit matriciel partiel Yi = Ai * X
Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A • Chaque Ai est une matrice r x n • Chaque processus Pi : • lit de la mémoire globale les valeurs Ai et X • calcule le produit Zi = Ai X • écrit les valeurs de Zi sur les composants correspondants de Y en mémoire globale • Cette solution nécessite : • des lectures concurrentes du vecteur X • des lectures exclusives des blocs de lignes ((i-1)r +1) – ir de la matrice A affectées au processeur Pi i = 1,2, … n • des écritures exclusives sur les composantes ((i-1)r +1) – ir du vecteur Y calculées par le processeur Pi i = 1,2, … n • Architecture requise : PRAM CREW
Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur Algorithme exécuté par le processeur Pi • Input • A : Une matrice nxn (mémoire globale) • X : Un vecteur de n éléments (mémoire globale) • Output • y = AX (y est une variable partagée en mémoire globale) • Variables locales à Pi • i : identité du processeur Pi • p, n : nombre de processeurs et la dimension de A • Begin • 1. Global read ( x, z) • 2. global read (A((i-1)r + 1 : ir, 1:n), B) • 3. calculer W = Bz • 4. global write (w, y(i-1)r+1 : ir)) • End
Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur Analyse de la solution et Estimation : • Coût de calcul Ligne 3 représente le calcul du produit vectoriel et nécessite O( n2/p) opérations arithmétiques r lignes X n opérations ( avec r = n/p) • Coût de communication Ligne 1 : transfert de O(n) nombres de la mémoire globale vers la mémoire locale Ligne 2 : transfert de O(n2/p) nombres de la mémoire globale vers la mémoire locale de Pi Ligne 4 : transfert de O(n/p) nombres de la mémoire locale de Pi vers la mémoire globale • Au total : Coût : O(n) + O(n2/p) + O(n2/p) + O(n/p) = O(n2/p)
A1 A1,1 … A1,r A2,1 … A2,r An,1 … An,r X1 X1 … Xr * Processeur P1 r colonnes r colonnes …….. Ap A1,(p-1)r +1 ... A1,pr A2,(p-1)r +1 ... A2,pr An,(p-1)r +1 ... An,pr Xp X(p-1)r +1 ... Xpr * Processeur Pp Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur Autre solution : Partition Verticale de la matrice A + Partition du vecteur X Y1 Y2 …. Yn
Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur Solution en deux phases : • Phase 1 : Calcul des produits partiels Les p processeurs calculent les produits partiels Z1 =A1X1 Z2 = A2 X2, … Zp = ApXp • Phase 2 : Calcul du produit final Y= AX = Z1 + Z2 + … + Zp F Nécessite une synchronisation en fin de phase 1. Toutes les valeurs Zi doivent être disponibles avant le début de la phase 2
Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur Algorithme exécuté par le processeur Pi • Input • A : Une matrice nxn (mémoire globale) • X : Un vecteur de n éléments (mémoire globale) • Output • y = AX (y est une variable partagée en mémoire globale) • Variables locales à Pi • i : identité du processeur Pi • p, n : nombre de processeurs et la dimension de A • Begin • 1. Global read ( x( (i-1)r +1 : ir) , z) • 2. global read (A(1:n, (i-1)r + 1 : ir), B) • 3. calculer W = Bz • 4. Synchroniser les processeurs Pi • 5. global write (w, y(i-1)r+1 : ir)) • End
Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur Partition Horizontale de la matrice A • Chaque Ai est une matrice n x r • Chaque processus Pi : • lit de la mémoire globale les colonnes associées ( Ai ) et le sous bloc Xi de X • calcule le produit Zi = Ai Xi • se synchronise avec les autres processeurs avant le début de la phase de la somme Y = AX = Z1 + Z2 + … + Zp • Cette solution nécessite : • des lectures exclusives des vecteurs Xi • des lectures exclusives des blocs de colonnes ((i-1)r +1) – ir de la matrice A • des écritures concurrentes sur le vecteur final Y • Architecture requise : PRAM ERCW ( avec résolution de conflit d’écriture SUM)
Modèle PRAMExemple de Calcul (3) : Somme de n entiers Somme de n entiers sur une machine PRAM • Soit A un tableau de n éléments en mémoire globale. Un tableau A de n = 2k éléments en mémoire globale d’une machine PRAM On veut calculer la somme S = A(1) + A(2) + …. + A(n) • Construire un arbre binaire pour calculer la somme.
S=B(1) P1 P1 B(2) P2 P1 B(1) B(4) B(3) B(1) B(1) B(2) P1 P3 P4 P2 B(2) =A(2) B(1) =A(1) B(1) =A(1) B(2) =A(2) B(1) =A(1) B(2) =A(2) B(1) =A(1) B(2) =A(2) P1 P2 P3 P4 P5 P6 P7 P8 Modèle PRAMExemple de Calcul (3) : Somme de n entiers Niveau >1, Pi calcule B(i) = B(2i-1) + B(2i) Niveau 1, Pi calcule B(i) = A(i)
Modèle PRAMExemple de Calcul (3) : Somme de n entiers Algorithme exécuté par le processeur Pi • Input • A : Un tableau de n = 2k éléments en mémoire global • Output • S : où S= A(1) + A(2) + …. . A(n) • Variables locales à Pi • n : nombre d’éléments • i : identité du processeur Pi • Begin • 1. global read ( A(i), a) • 2. global write (a, B(i)) • 3. for h = 1 to log n do • if ( i ≤ n / 2h ) then begin • global read (B(2i-1), x) • global read (b(2i), y) • z = x +y • global write (z,B(i)) • end • 4. if i = 1 then global write(z,S) • End
Modèle PRAMExemple de Calcul (4) : Produit de matrice C = AB Produit de deux matrices C[Cij] = A[Aij] B[Bij] • L'élément Cij est calculé par l'expression Cij = l Ail * Blj • Si on dispose de n3 processeurs dénommés par Pi,j,l (1 i,j,l n) Chaque valeur est calculé par l'ensemble de processeurs Pi,j,l (1 l n) en O(logn) unités de temps.
P0,0,3 C0,0,3 = A00 * B03 + A01 * B13 + A02 * B23 + A03 * B33 P0,0,3 C0,0,3 P0,0,2 C0,0,2 C00 = C0,0,1 P0,0,1 C0,0,0 P0,0,0 C0,0,0 C0,1,0 C0,2,0 C0,3,0 Modèle PRAMExemple de Calcul (4) : Produit de matrice C = AB
Modèle PRAMExemple de Calcul (4) : Produit de matrice C = AB • Algorithme exécuté par le processeur Pi,j,l i,j,l = 0,1,…,n-1 Input : (1) les matrices n x n A et B en mémoire globale (n = 2k) (2) Les variables locales (i,j,l) indexe du processeur Output : Le produit C = AB Begin 1. calculer C'(i,j,l) = A(i,l) * B(l,j) 2. for h = 1 to log n do if ( l n/ 2h) then C'(i,j,l) = C'(i,j,2l - 1 ) + C'(i,j,2l) 3. if (l=1) then C(i,j) = C'(i,j,1) End
Modèle PRAMExemple de Calcul (4) : Produit de matrice C = AB Remarques • Lectures concurrentes de certains éléments • Par exemple les processeurs Pi,1,l, Pi,2,l, …, Pi,n,llisent l'élément A(i,l) en même temps • Nécessité d'une architecture CREW
Traitement Parallèle Modèles Réseaux
Modèle Réseau • Prend en compte l'architecture de communication sous-jacente • Un réseau peut être vu comme un graphe G=(N,E) dans lequel : • Chaque nœud i N est un processeur • Chaque arc (i,j)E représente une communication entre les processeurs i et j (lien direct bidirectionnel entre deux processeurs)
a44 a43 a42 a41 a34 a33 a32 a31 a24 a23 a22 a21 a14 a13 a12 a11 . n . . Y=[yi], where yi = aij*xj J=1 . . . x4 x3 x2 x1 P2 P1 P3 P4 Modèle RéseauExemple (1) : Produit Matrice Vecteur Matrix-Vector multiplication on a linear array Given an nxn matrix A = [aij], i,j [1,n] and an n order vector X=[xi], compute the product Y=Ax Systolic array algorithm for n=4
Modèle RéseauExemple (1) : Produit Matrice Vecteur • At step j, xj enters the processor P1. At step j, processor Pi receives • (when possible) a value from its left and a value from the top. • It updates its partial as follows: • Yi = Yi + aij*xj , j=1,2,3, …. • Values xj and aij reach processor i at the same time at step (i+j-1) • (x1, a11) reach P1 at step 1 = (1+1-1) • (x3, a13) reach P1 at setep 3 = (1+3-1) • In general, Yi is computed at step N+i-1 • The computation is completed when x4 and a44 reach processor P4 at • Step N + N –1 = 2N-1 • Conclusion: The algorithm requires (2N-1) steps. At each step, active processor • Perform an addition and a multiplication • Complexity of the algorithm: O(N)
Step x1 1 x1 x2 2 x2 x1 x3 3 x3 x2 x1 4 x4 4 4 4 4 y1 = a1j*xj y4 = a4j*xj y2 = a2j*xj y3 = a3j*xj x4 x3 x2 x1 5 J=1 J=1 J=1 J=1 x4 x3 x1 x2 6 x1 x2 x4 x3 7 P2 P2 P2 P2 P2 P2 P2 P1 P1 P1 P1 P1 P1 P1 P3 P3 P3 P3 P3 P3 P3 P4 P4 P4 P4 P4 P4 P4 Modèle RéseauExemple (1) : Produit Matrice Vecteur
P2 P2 P2 P2 P2 P2 P2 P1 P1 P1 P1 P1 P1 P1 P3 P3 P3 P3 P3 P3 P3 P4 P4 P4 P4 P4 P4 P4 Modèle RéseauExemple (1) : Produit Matrice Vecteur Systolic array algorithm: Time-Cost analysis 1 Add; 1 Mult; active: P1 idle: P2, P3, P4 2 Add; 2 Mult; active: P1, P2 idle: P3, P4 3 Add; 3 Mult; active: P1, P2,P3 idle: P4 4 Add; 4 Mult; active: P1, P2,P3 P4 idle: 3 Add; 3 Mult; active: P2,P3,P4 idle: P1 2 Add; 2 Mult; active: P3,P4 idle: P1,P2 1 Add; 1 Mult; active: P4 idle: P1,P2,P3
Step x1 1 x1 x2 2 x2 x1 x3 3 x3 x2 x1 4 x4 x4 x3 x2 5 x4 x3 6 x4 7 P2 P2 P2 P2 P2 P2 P2 P1 P1 P1 P1 P1 P1 P1 P3 P3 P3 P3 P3 P3 P3 P4 P4 P4 P4 P4 P4 P4 Modèle RéseauExemple (1) : Produit Matrice Vecteur Systolic array algorithm: Time-Cost analysis 1 Add; 1 Mult; active: P1 idle: P2, P3, P4 2 Add; 2 Mult; active: P1, P2 idle: P3, P4 3 Add; 3 Mult; active: P1, P2,P3 idle: P4 4 Add; 4 Mult; active: P1, P2,P3 P4 idle: 3 Add; 3 Mult; active: P2,P3,P4 idle: P1 2 Add; 2 Mult; active: P3,P4 idle: P1,P2 1 Add; 1 Mult; active: P4 idle: P1,P2,P3
n C=[cij], where cij = aik*bkj J=1 Modèle RéseauExemple (2) : Matrix multiplication on a 2-D nxn Mesh • Given two nxn matrices A = [aij] and B = [bij], i,j [1,n], Compute the product C=AB , where C is given by : Example: Systolic mesh algorithm for n=4 • At step i, Row i of A (starting with ai1) is entered from the top into column i • (into processor P1i) • At step j, Column j of B (starting with b1j) is entered from the left into row j • (to processor Pj1) • The values aik and bkj reach processor (Pji) at step (i+j+k-2). • At the end of this step aik is sent down and bkj is sent right.
a44 a43 a42 a41 . . . a34 a33 a32 a31 . . a24 a23 a22 a21 a14 a13 a12 a11 . b41 b3 b21 b11 (1,4) (1,2) (1,3) (1,1) . b42 b32 b22 b12 (2,1) (2,2) (2,3) (2,4) . . b43 b33 b23 b13 (3,1) (3,2) (3,3) (3,4) . . b44 b34 b24 b14 (4,1) (4,2) (4,3) (4,4) Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Example: Systolic mesh algorithm for n=4 STEP 1
a44 A a34 a43 a24 a33 a42 b41 b31 b21 b11 a14 a41 a23 a32 b12 b32 b22 b42 a13 a31 b43 a22 b33 b23 b13 • a12 b44 b34 a21 b14 b24 B • a11 Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Example: Systolic mesh algorithm for n=4 STEP 5
Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Analysis • To determine the number of steps for completing the multiplication of the matrice, we must find the step at which the terms ann and bnn reach rocessor Pnn. • Values aik and bkj reach processor Pji at i+j+k-2 • Substituing n for i,j,k yields : n + n + n – 2 = 3n - 2 • Complexity of the solution: O(N)
a22 a21 a24 a23 a13 a12 a11 a14 a44 a43 a42 a41 a31 a34 a33 a32 N=4 aij X4 X3 X2 X1 P4 P1 P2 P3 Xi Modèle Réseau Exemple (3) : Matrix multiplication on a ring • Goal To pipeline data into the processors, so that n product terms are computed and added to partial sums at each step. • Distribution of X on the processors Xj 1j N, Xj is assigned to processor N-j+1 This algorithm requires N steps for a matrix-vector multiplication
a23 a24 a21 a22 a12 a13 a14 a11 a41 a42 a43 a44 a34 a31 a32 a33 N=4 aij Diagonal X1 X2 X3 X4 P4 P1 P2 P3 Xi Modèle Réseau Exemple (3) : Matrix multiplication on a ring Another way to distribute the Xi over the processors and to input Matrix A • Row i of the matrix A is shifted (rotated) down i (mod n) times and entered into processor Pi. • Xi is assigned to processor Pi, at each step the Xi are shifted right
Modèle RéseauExemple (4) : Matrix multiplication on a 2D Mesh with Wrap around • Given two nxn matrices A = [aij] and B = [bij], i,j [1,n], Compute the product C=AB • The values of the matrices are stored in the processors. • Initially: • PE[i,j] has x[i,j] = a[i,j] and y[i,j] = b[i,j] • Row i shift left x data (n- i-1) mod n times • Col j shift up y data (n- j-1) mod n times
a11 a12 a13 a14 b11 b12 b13 b14 a21 a24 a22 a23 b21 b24 b22 b23 a31 a33 a34 a32 b31 b34 b33 b32 • a41 a42 a43 a44 b43 b44 b41 b42 Modèle RéseauExemple (4) : Matrix multiplication on a 2D Mesh with Wrap around Step 1