Système-Distribué
Transcription
Système-Distribué
Systémes Distribués 2004 – 2005 K. Yétongnon Modèles de Parallélisme 1 © Systèmes Distribués - K. Yétongnon Modèles de traitement parallèle Trois types de modèles : z Modèles Graphes (DAG : Directed Acyclic Graph) z Modèle à mémoire partagée PRAM z z z Parallel Random Access Machine Deux modes d’opération d’une Machine PRAM 9 Synchorne : tous les processeurs sont contrôlés par une horloge commune 9 Asynchrone : chaque processeur est contrôle par une horloge dédiée Modèle Réseau z z Mémoire distribuée Processeurs communiquent par échange de messages 2 © Systèmes Distribués - K. Yétongnon Systémes Distribués 2004 – 2005 K. Yétongnon Traitement Parallèle Modèles Graphes 3 © Systèmes Distribués - K. Yétongnon Modèles Graphes Ceci sera fait z en TD et z par des exemples dans d’autres parties du cours 4 © Systèmes Distribués - K. Yétongnon Systémes Distribués 2004 – 2005 K. Yétongnon Traitement Parallèle Modèles PRAM 5 © Systèmes Distribués - K. Yétongnon Modèle PRAM z Classification de différentes architectures parallèles PRAM z Flynn propose une classification basée sur deux critères : z z z Flux des données Flux des instructions Chaque flux peu être : z z Unique (Single) Multiple 6 © Systèmes Distribués - K. Yétongnon Modèle PRAM z Classification de Flynn Flux d’Instructions Flux de données SINGLE MULTIPLE SINGLE SISD SIMD MULTIPLE MISD MIMD 7 © Systèmes Distribués - K. Yétongnon Modèle PRAM z Une extension simple du modèle classique RAM (Random Access Memory) pour prendre en compte la multiplicité de processeurs Mémoire Globale (Shared – Memory) P1 P2 Pp 8 © Systèmes Distribués - K. Yétongnon Modèle PRAM Propriétés z p Processeurs ayant chacun une mémoire locale (non accessible aux autres processeurs) z Une Mémoire Globale (Shared-Memory) partagée par tous les processeurs z 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 9 © Systèmes Distribués - K. Yétongnon Modèle PRAM Deux modes d'opération du modèle PRAM : z Synchrone z 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) )A chaque étape, certains processeurs sont inactifs )Ce mode est adapté aux architecture de type SIMD, MIMD z Asynchrone z 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. )Plutôt adapté aux architectures MIMD 10 © Systèmes Distribués - K. Yétongnon Modèle PRAM z z 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 11 © Systèmes Distribués - K. Yétongnon 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 Processeur 0 Processeur 1 Processeur 2 Processeur 3 A:5 B:0 C : 5 (Actif, B=0) A:4 B:2 C : 0 (Inactif, B≠0) A:2 B:1 C : 0 (Inactif, B≠0) A:7 B:0 C : 7 (Actif, B=0) Etape 1 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, B≠0) A:2 B:1 C : 2 (Actif, B≠0) A:7 B:0 C : 7 (Inactif, B=0) © Systèmes Distribués - K. Yétongnon 12 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 z EREW : Exclusive - Read, Exclusive -Write z z Les accès simultanés ( en lecture ou écriture) à une adresse mémoires sont interdits CREW : Concurrent – Read, Exclusive – Write z z Accès simultanés autorisés en lecture Accès exclusif en écriture (une seule écriture à la fois à la même adresse) 13 © Systèmes Distribués - K. Yétongnon Modèle PRAM z CRCW : Concurrent – Read, Concurrent – Write z z z 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? 14 © Systèmes Distribués - K. Yétongnon Modèle PRAM Résolution des problèmes d'écritures concurrentes dans le modèle CRCW ( m processeurs en écriture sur une variable X) : z Common CRCW : les écritures concurrentes sont autorisées si les valeurs écrites par les m processeurs sont égales z SUM CRCW : la somme des valeurs est écrite dans X z Random CRCW : un processeur est choisi au hasard et autorisé à eécrire sa valeur dans X. Les autres écritures échouent (terminent sans écrire) z 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) 15 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple : Soit P1 (50 Æ X) , P2 (60 Æ X), P3 (70 Æ X) des demandes d’écritures simultanées sur une variable X : z Common CRCW ou ERCW : ECHEC z SUM CRCW : la somme (180) des valeurs est écrite dans X z 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 } z 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 © Systèmes Distribués - K. Yétongnon 16 Modèle PRAM Instructions spéciales pour lire et écrire en mémoire globale z Global read (X, x) z Global write (Y, y) 17 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur z Produit Matrice-Vecteur Y = AX zA est une matrice n x n, X un vecteur de taille n z p processeurs opérant en mode asynchrone, p≤n et r = n/p Mémoire Globale Y1 Y2 …. Yn P1 A1,1 A1,2 A2,1 A2,2 = … A1,n … A2,n X …….. A n,1 An,2 P2 ... An,n X1 X2 …. Xn Pp 18 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur z Principe de la solution z Partitionner les données en blocs ou partitions. Chaque processeur calcule des résultats partiels sur une partition z Combiner z les résultats partiels Comment partitionner le calcul de Y = AX? 19 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A z La matrice A est découpée horizontalement en p blocs Ai,* (sous matrices) de r lignes A1,1 A= A1 A2 …. Ap zProcesseur Ar,1 A1,2 ……. A2,2 ……. … A1,n A1 r lignes … A2,n = A(p-1)r,1 A(p-1),2 … A(p-1),n …….. A pr,1 Apr,2 ….Apr,n Ap r lignes Pi calcule le produit matriciel partiel Yi = Ai * X 20 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A z Processeur Pi calcule le produit matriciel partiel Yi = Ai * X P1 P2 Pp Y1 Y2 …. Yr Yr+1 Yr+2 …. Y2r Y(p-1)r+1 Y(p-1)r+2 …. Ypr © Systèmes Distribués - K. Yétongnon A1,1 Ar,1 Ar+1,1 A2r,1 A1,2 ……. A2,2 … A1,n … A2,n Ar+1,2 … Ar+1,n ……. A2r,2 … A2r,n A(p-1)r,1 A(p-1)r,2 …A(p-1)r,n ……. Apr,1 Apr,2 … Apr,n X X X X1 X2 …. Xn X1 X2 …. Xn X1 X2 …. Xn 21 Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur Partition Horizontale de la matrice A z z Chaque Ai est une matrice r x n Chaque processus Pi : z lit de la mémoire globale les valeurs Ai et X z calcule le produit Zi = Ai X z écrit les valeurs de Zi sur les composants correspondants de Y en mémoire globale z Cette solution nécessite : z des lectures concurrentes du vecteur X z 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 z 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 22 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple 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 23 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (1) : Produit Matrice Vecteur Analyse de la solution et Estimation : z 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) z 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 z Au total : Coût : O(n) + O(n2/p) + O(n2/p) + O(n/p) = O(n2/p) 24 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (2) : Produit Matrice Vecteur Autre solution : Partition Verticale de la matrice A + Partition du vecteur X 1 A1,1 … A1,r A2,1 … A2,r Y1 Y2 …. A X1 * X1 … Xr An,1 … An,r Processeur P1 r colonnes …….. Yn A1,(p-1)r +1 ... A1,pr A2,(p-1)r +1 ... A2,pr Ap Xp * X(p-1)r +1 ... Xpr An,(p-1)r +1 ... An,pr r colonnes © Systèmes Distribués - K. Yétongnon Processeur Pp 25 Modèle PRAM Exemple de Calcul (2) : Produit Matrice Vecteur Solution en deux phases : z Phase 1 : Calcul des produits partiels Les p processeurs calculent les produits partiels Z1 =A1X1 Z2 = A2 X2, … Zp = ApXp z Phase 2 : Calcul du produit final Y= AX = Z1 + Z2 + … + Zp ) Nécessite une synchronisation en fin de phase 1. Toutes les valeurs Zi doivent être disponibles avant le début de la phase 2 © Systèmes Distribués - K. Yétongnon 26 Modèle PRAM Exemple 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 27 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (2) : Produit Matrice Vecteur Partition Horizontale de la matrice A z z Chaque Ai est une matrice n x r Chaque processus Pi : z lit de la mémoire globale les colonnes associées ( Ai ) et le sous bloc Xi de X z calcule le produit Zi = Ai Xi z se synchronise avec les autres processeurs avant le début de la phase de la somme Y = AX = Z1 + Z2 + … + Zp z Cette solution nécessite : z des lectures exclusives des vecteurs Xi z des lectures exclusives des blocs de colonnes ((i-1)r +1) – ir de la matrice A z des écritures concurrentes sur le vecteur final Y $ Architecture requise : PRAM ERCW ( avec résolution de conflit d’écriture SUM) © Systèmes Distribués - K. Yétongnon 28 Modèle PRAM Exemple de Calcul (3) : Somme de n entiers Somme de n entiers sur une machine PRAM z 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) z Construire un arbre binaire pour calculer la somme. 29 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (3) : Somme de n entiers Niveau >1, Pi calcule B(i) = B(2i-1) + B(2i) S=B(1) P1 Niveau 1, Pi calcule B(i) = A(i) B(1) P1 B(1) =A(1) P1 B(1) B(2) P1 P2 B(1) B(2) B(3) B(4) P1 P2 P3 P4 B(2) =A(2) B(1) =A(1) P2 P3 © Systèmes Distribués - K. Yétongnon B(2) =A(2) P4 B(1) =A(1) P5 B(2) =A(2) P6 B(1) =A(1) P7 B(2) =A(2) P8 30 Modèle PRAM Exemple 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 © Systèmes Distribués - K. Yétongnon 31 Modèle PRAM Exemple de Calcul (4) : Produit de matrice C = AB Produit de deux matrices C[Cij] = A[Aij] B[Bij] z L'élément Cij est calculé par l'expression Cij = Σl Ail * Blj z 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. 32 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (4) : Produit de matrice C = AB P0,0,3 P0,0,2 P0,0,3 C0,0,3 = A00 * B03 + A01 * B13 + A02 * B23 + A03 * B33 C0,0,3 C0,0,2 C00 = Σ P0,0,1 P0,0,0 C0,0,1 C0,0,0 C0,0,0 C0,1,0 C0,2,0 C0,3,0 33 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (4) : Produit de matrice C = AB z 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 34 © Systèmes Distribués - K. Yétongnon Modèle PRAM Exemple de Calcul (4) : Produit de matrice C = AB Remarques z Lectures concurrentes de certains éléments z Par exemple les processeurs Pi,1,l, Pi,2,l, …, Pi,n,l lisent l'élément A(i,l) en même temps z Nécessité d'une architecture CREW 35 © Systèmes Distribués - K. Yétongnon Systémes Distribués 2004 – 2005 K. Yétongnon Traitement Parallèle Modèles Réseaux 36 © Systèmes Distribués - K. Yétongnon Modèle Réseau z Prend en compte l'architecture de communication sous-jacente z Un réseau peut être vu comme un graphe G=(N,E) dans lequel : Chaque nœud i ∈N est un processeur z Chaque arc (i,j)∈E représente une communication entre les processeurs i et j (lien direct bidirectionnel entre deux processeurs) z 37 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (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 n Y=[yi], where yi = J=1 Σ aij*xj a34 a44 a43 a24 a33 a42 a14 a23 a32 a41 a13 a22 a31 a12 a21 a11 . P1 P2 Systolic array algorithm for n=4 x4 x3 © Systèmes Distribués - K. Yétongnon x2 x1 . . P3 . . . P4 38 Modèle Réseau Exemple (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) 39 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (1) : Produit Matrice Vecteur Step 1 x1 2 x2 P1 3 x3 P1 4 5 6 7 x4 P1 P1 P1 P1 P1 © Systèmes Distribués - K. Yétongnon x1 x2 x3 x4 P2 P3 P4 P2 P3 P4 P3 P4 P2 P2 P2 P2 P2 x1 x2 x3 x4 P3 P3 P3 P3 x1 x2 x3 x4 4 P4 y1 = Σa1j*xj x1 P4 y2 = Σa2j*xj J=1 4 J=1 4 P4 P4 x2 x1 x3 x2 y3 = Σa3j*xj J=1 x1 4 y4 = Σa4j*xj J=1 40 Modèle Réseau Exemple (1) : Produit Matrice Vecteur Systolic array algorithm: Time-Cost analysis P1 P2 P3 P4 1 Add; 1 Mult; active: P1 idle: P2, P3, P4 P1 P2 P3 P4 2 Add; 2 Mult; active: P1, P2 idle: P3, P4 P1 P2 P3 P4 3 Add; 3 Mult; active: P1, P2,P3 idle: P4 P1 P2 P3 P4 4 Add; 4 Mult; active: P1, P2,P3 P4 idle: P1 P2 P3 P4 3 Add; 3 Mult; active: P2,P3,P4 idle: P1 P1 P2 P3 P4 2 Add; 2 Mult; active: P3,P4 idle: P1,P2 P1 P2 P3 P4 1 Add; 1 Mult; active: P4 idle: P1,P2,P3 © Systèmes Distribués - K. Yétongnon 41 Modèle Réseau Exemple (1) : Produit Matrice Vecteur Systolic array algorithm: Time-Cost analysis Step 1 x1 2 x2 P1 3 x3 P1 4 x4 P1 5 P1 P1 x1 x2 x3 x4 P2 P3 P4 1 Add; 1 Mult; active: P1 idle: P2, P3, P4 P2 P3 P4 2 Add; 2 Mult; active: P1, P2 idle: P3, P4 P3 P4 3 Add; 3 Mult; active: P1, P2,P3 idle: P4 P4 4 Add; 4 Mult; active: P1, P2,P3 P4 idle: P4 3 Add; 3 Mult; active: P2,P3,P4 idle: P1 P4 2 Add; 2 Mult; active: P3,P4 idle: P1,P2 P4 1 Add; 1 Mult; active: P4 idle: P1,P2,P3 P2 P2 P2 6 P1 P2 7 P1 P2 © Systèmes Distribués - K. Yétongnon x1 x2 x3 x4 P3 P3 P3 P3 x1 x2 x3 x4 42 Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh z Given two nxn matrices A = [aij] and B = [bij], i,j∈ [1,n], Compute the product C=AB , where C is given by : n C=[cij], where cij = Σ aik*bkj J=1 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. 43 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Example: Systolic mesh algorithm for n=4 STEP 1 a14 a13 a12 a11 a24 a23 a22 a21 . . a44 a43 a42 a41 . . . a34 a33 a32 a31 . b41 b3 b21 b11 (1,1) (1,2) (1,3) (1,4) . (2,1) (2,2) (2,3) (2,4) . (3,1) (3,2) (3,3) (3,4) . . (4,1) (4,2) (4,3) (4,4) b42 b32 b22 b12 b43 b33 b23 b13 b44 b34 b24 b14 . 44 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Example: Systolic mesh algorithm for n=4 STEP 5 a34 a44 a43 a24 b41 a33 b31 a42 b21 a14 b42 a23 b32 a32 b22 a41 b12 b43 a13 b33 a22 b23 a31 b13 b44 b34 a12 b24 a21 b14 B © Systèmes Distribués - K. Yétongnon a11 A b11 45 Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh Analysis z 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. z z z 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) 46 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (3) : Matrix multiplication on a ring z z 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 1≤j ≤ N, Xj is assigned to processor N-j+1 N=4 a13 a22 a31 a44 a12 a21 a34 a43 a11 a24 a33 a42 a14 a23 a32 a41 X4 X3 X2 X1 P1 P2 P3 P4 aij Xi This algorithm requires N steps for a matrix-vector multiplication © Systèmes Distribués - K. Yétongnon 47 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 z z 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 a12 a23 a34 a41 a13 a24 a31 a42 a14 a21 a32 a43 a11 a22 a33 a44 X1 X2 X3 X4 P1 P2 P3 P4 N=4 Diagonal aij Xi 48 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around z Given two nxn matrices A = [aij] and B = [bij], i,j Compute the product C=AB [1,n], 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 49 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around Step 1 a11 b11 a12 b12 a13 b13 a14 b14 a21 b21 a22 b22 a23 b23 a24 b24 a31 b31 a32 b32 a33 b33 a34 b34 a41 b41 a42 b42 a43 b43 a44 b44 50 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around Step 2 Rearrange Data Left Shift a11 b11 a12 b22 a13 b33 a14 b44 a22 b21 a23 b32 a24 b43 a21 b14 a33 b31 a34 b42 a31 b13 a32 b24 a44 b41 a41 b12 a42 b23 a43 b34 Up Shift © Systèmes Distribués - K. Yétongnon 51 Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around Step 3 Multiply Add and Move Data a11 b11 a12 b22 a13 b33 a14 b44 a22 b21 a23 b32 a24 b43 a21 b14 a33 b31 a34 b42 a31 b13 a32 b24 a44 b41 a41 b12 a42 b23 a43 b34 Data Move at Cell ij Σ aik bkj n Cij =Σaik*bkj k=1 c21 = a22b21 + a21b11 + a24b41 + a23b33 © Systèmes Distribués - K. Yétongnon 52 Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube Compute S = ∑ xi, xi is assigned to processor Pi 7 (X7) (X6) 6 (X2) 2 3 (X3) (X4) 4 (X0) 0 5 (X5) 1 (X1) 53 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube Step 1: Processors of the sub-cube 1XX send their data to corresponding processors in sub-cube 0XX 6 (X2+X6) 2 3 (X3+X7) 4 (X0+X4) 0 7 5 1 (X1+X5) 54 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube Step 2: Processors of the sub-cube 01X send their data to corresponding processors in sub-cube 00X 6 7 2 3 4 5 (X0+X4+X2+X6) 0 P Processeurs actifs 1 (X1+X5+X3+X7) P Processeurs inactifs 55 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube Step 3: Processors of the sub-cube 01X send their data to corresponding processors in sub-cube 00X 6 2 7 3 4 S = (X0+X4+X2+X6+ X1+X5+X3+X7) 0 5 1 The sum of the N numbers is accumulated on node P0 P Processeurs actifs P Processeurs inactifs 56 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube Algorithm for Parallel sum on hypercube Input: 1) An array of X of N=2p of numbers, X[i] is assigned to processor Pi 2) processor identity id Output: S= X[0]+…+X[N], stored on processor P0 Processor Pi Begin My_id = id ( My_id Åi) S=X[i] For j = 0 to (d-1) do begin Partner = M_id XOR 2j if My_id AND 2j = 0 begin receive(Si, Partner) S = S + Si end if My_id AND 2j ≠ 0 begin send(S, Partner) exit end end end © Systèmes Distribués - K. Yétongnon 57 Modèle Réseau Exemple (6) : One-to-all broadcast in a p-hypercube •Another example of processing on a 3-hypercube: Broadcast an element X stored on one processor (say P0) to the other processors of the hypercube. • This broadcast can be performed in O(logn) as follows Initial distribution of data 6 2 7 3 4 X © Systèmes Distribués - K. Yétongnon 0 5 1 58 Modèle Réseau Exemple (6) : One-to-all broadcast in a p-hypercube •Step 1: Processor Po sends X to processor P1 •Step 2: Processors P0 and P1 send X to P2 and P3 respectively •Step 3: Processor P0, P1, P2 and P3 send X to P4, P5, P6 and P7 X 6 2 7 X 2 3 5 4 0 X Step 1 P 6 1 X Processeurs actifs 7 X 2 X 3 5 4 0 X P 7 X 3 5 X 4 X 0 X 1 Step 2 X X 6 1 Step 3 X Processeurs inactifs 59 © Systèmes Distribués - K. Yétongnon Modèle Réseau Exemple (6) : One-to-all broadcast in a p-hypercube Algorithm for a broadcast of X on a p-hypercube Input: 1) X assigned to processor P0 2) processor identity id Output: All processor Pi contain X Processor Pi Begin If i = 0 then B = X My_id = id ( My_id Å i) For j = 0 to (d-1) do if My_id ≤ 2j begin Partner = My_id XOR 2j if My_id > Partner receive(B, Partner) if My_id < Partner send(S, Partner) end end 60 © Systèmes Distribués - K. Yétongnon Exercice z Illustrer sur une figure les différentes étapes du produit matrice vecteur C[ij] = A[ij] x X[i], i,j sur les architectures suivantes. Déterminer pour chaque solution le nombre d’étapes et le facteur d’accélération z z Un réseau linéaire de 3 processeurs Un anneau de 3 processeurs 61 © Systèmes Distribués - K. Yétongnon Exercice z Illustrer les différentes étapes du produit de matrice 3 X3 C[ij] = A[ij] X B[ij] sur les architectures suivantes et déterminer pour chaque solution le nombre d’étapes et le facteur d’accélération z z Une grille 3 X 3 Un tore 3X3 (grille avec retour) 62 © Systèmes Distribués - K. Yétongnon Exercice z Illustrer les différentes étapes du produit de matrice 2 X2 C[ij] = A[ij] X B[ij] sur une architecture PRAM composée de 8 processeurs 63 © Systèmes Distribués - K. Yétongnon Exercice Show that the code fragment below computes a Prefix Sum on a PRAM model. From an array of values A of size n computes in place the prefix sums B[i] <----- A[1] + A[2] + … + A[i] Give a figure to illustrate the data transfers and computations performed in the different steps. for i=0 to (n-1) pardo begin for k = 0 to ⎣ log (n – 1) ⎦ do if ( i ≥ 2k ) then begin global read ( A [ i - 2k ], a) global read (A[ i ], b ) c=a+b global write (c, A[i]) end end © Systèmes Distribués - K. Yétongnon 64 Systémes Distribués 2004 – 2005 K. Yétongnon Calculs Matriciels (2ème visite) 65 © Systèmes Distribués - K. Yétongnon Partitions des données z Si le nombre de processeurs est égal ou supérieur au nombre de données z z Si le nombre de processeurs est inférieur au nombre de données z z On associe à chaque processeur une unité de chaque donnée On associe à chaque processeur un bloc de données à traiter Comment réaliser les partitions de données 66 © Systèmes Distribués - K. Yétongnon Partition des données P1 P0 P2 P3 •Découpage en bandes suivant les colonnes •Un ensemble de n colonnes consécutives est affecté à chaque processeur Pi 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 67 © Systèmes Distribués - K. Yétongnon Partition des données P1 P0 P2 P3 •Découpage en bandes suivant les colonnes •Répartition cyclique 0 4 8 12 2 1 5 9 13 6 10 14 3 7 11 15 68 © Systèmes Distribués - K. Yétongnon Partition des données 0 1 2 P0 •Découpage en bandes suivant les lignes P1 •Un ensemble de n lignes consécutives est affecté à chaque processeur 3 4 5 6 7 8 9 P2 10 11 12 13 P3 14 15 69 © Systèmes Distribués - K. Yétongnon Partition des données 0 4 8 P0 •Découpage en bandes suivant les lignes 12 •Répartition cyclique 1 P1 5 9 13 2 6 P2 10 14 3 7 P3 11 15 70 © Systèmes Distribués - K. Yétongnon Partition des données (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) P0 P1 P2 P3 (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) P4 P5 P6 P7 (3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) P8 P9 P10 P11 (5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) P12 P13 P14 P15 (7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) Répartition par Blocs Réguliers d’éléments consécutifs © Systèmes Distribués - K. Yétongnon (0,0) (0,4) (0,1) (0,5) (0,2) (0,6) (0,3) (0,7) P0 P1 P2 P3 (4,0) (4,4) (4,1) (4,5) (4,2) (4,6) (4,3) (4,7) (1,0) (1,4) (1,1) (1,5) (1,2) (1,6) (1,3) (1,7) P4 P5 P6 P7 (5,0) (5,4) (5,1) (5,5) (5,2) (5,6) (5,3) (5,7) (2,0) (2,4) (2,1) (2,5) (2,2) (2,6) (2,3) (2,7) P8 P9 P10 P11 (6,0) (6,4) (6,1) (6,5) (6,2) (5,6) (6,3) (6,7) (3,0) (3,4) (3,1) (3,5) (3,2) (3,6) (3,3) (3,7) P12 P13 P14 P15 (7,0) (7,4) (7,1) (7,5) (7,2) (7,6) (7,3) (7,7) Répartition par Blocs cyclique 71 Transposition de Matrice z Transposition d’une matrice nxn est une matrice AT AT [i,j] = A [j,i] pour 0 ≤ i,j ≤ n z On suppose que le temps nécessaire à l’échange (transposition) de deux éléments est égal à une unité , Le temps d’exécution de la solution séquentielle est égal à : Ts = (n2 – n) / 2 72 © Systèmes Distribués - K. Yétongnon Transposition de Matrice ( Grille n x n) z Exemple : Transposition d’une matrice 4x4 sur une grille carrée de 16 processeurs Etapes de communication Nombre de processeurs égal à n2 (nombre de données) (0,0) P0 (1,0) P4 (2,0) P8 (3,0) P12 (0,1) P1 (1,1) P5 (2,1) P9 (3,1) P13 (0,2) P2 (1,2) P6 (2,2) P10 (3,2) P14 (0,3) P3 (1,3) P7 (2,3) P11 (3,3) P15 73 © Systèmes Distribués - K. Yétongnon Transposition de Matrice ( Grille n x n) z Phase 1 Etapes de communication (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) P0 P1 P2 P3 (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) P4 P5 P6 P7 (3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) P8 P9 P10 P11 (5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) P12 P13 P14 P15 (7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) © Systèmes Distribués - K. Yétongnon Nombre de processeurs p Inférieur au nombre de données à n2 : ( p ≤ n2 ) Solution en deux phases : Phase 1 : Les blocs associés aux processeurs sont considérés comme une seule valeur ==> Transposer la matrice ainsi obtenue Phase 2 : Chaque processeur transpose localement sa sous matrice 74 Transposition de Matrice ( Grille n x n) z Phase 2 (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) P0 P1 P2 P3 (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) P4 P5 P6 P7 (3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) P8 P9 P10 P11 (5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) P12 P13 P14 P15 (7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) (0,0) (0,1) (2,0) (2,1) (4,0) (4,1) (6,0) (6,1) P0 P1 P2 P3 (1,0) (1,1) (3,0) (3,1) (5,0) (5,1) (7,0) (7,1) (0,2) (0,3) (2,2) (2,3) (4,2) (4,3) (6,2) (6,3) P4 P5 P6 P7 (1,2) (1,3) (3,2) (3,3) (5,2) (5,3) (7,2) (7,3) (0,4) (0,5) (2,4) (2,5) (4,4) (4,5) (6,4) (6,5) P8 P9 P10 P11 (1,4) (1,5) (3,4) (3,5) (5,4) (5,5) (7,4) (7,5) (0,6) (0,7) (2,6) (2,7) (4,6) (4,7) (6,6) (6,7) P12 P13 P14 P15 (1,6) (1,7) (3,6) (3,7) (5,6) (5,7) (7,6) (7,7) Réarrangement local (Transposition) © Systèmes Distribués - K. Yétongnon 75 Transposition de Matrice ( Grille n x n) z Algorithme Récursif (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,0) (0,1) (0,2) (0,3) (4,0) (4,1) (4,2) (4,3) (1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,0) (1,1) (1,2) (1,3) (5,0) (5,1) (5,2) (5,3) (2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,0) (2,1) (2,2) (2,3) (6,0) (6,1) (6,2) (6,3) (3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,0) (3,1) (3,2) (3,3) (7,0) (7,1) (7,2) (7,3) (4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) (0,4) (0,5) (0,6) (0,7) (4,4) (4,5) (4,6) (4,7) (5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (1,4) (1,5) (1,6) (1,7) (5,4) (5,5) (5,6) (5,7) (6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) (2,4) (2,5) (2,6) (2,7) (6,4) (6,5) (6,6) (6,7) (7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) © Systèmes Distribués - K. Yétongnon (3,4) (3,5) (3,6) (3,7) (7,4) (7,5) (7,6) (7,7) 76 Transposition de Matrice ( Grille n x n) Algorithme récursif (0,0) (0,1) (2,0) (2,1) (4,0) (4,1) (6,0) (6,1) (0,0) (1,0) (2,0) (3,0) (4,0) (5,0) (6,0) (7,0) (1,0) (1,1) (3,0) (3,1) (5,0) (5,1) (7,0) (7,1) (0,1) (1,1) (2,1) (3,1) (4,1) (5,1) (6,1) (7,1) (0,2) (0,3) (2,2) (2,3) (4,2) (4,3) (6,2) (6,3) (0,2) (1,2) (2,2) (3,2) (4,2) (5,2) (6,2) (7,2) (1,2) (1,3) (3,2) (3,3) (5,2) (5,3) (7,2) (7,3) (0,3) (1,3) (2,3) (3,3) (4,3) (5,3) (6,3) (7,3) (0,4) (0,5) (2,4) (2,5) (4,4) (4,5) (6,4) (6,5) (0,4) (1,4) (2,4) (3,4) (4,4) (5,4) (6,4) (7,4) (1,4) (1,5) (3,4) (3,5) (5,4) (5,5) (7,4) (7,5) (0,5) (1,5) (2,5) (3,5) (4,5) (5,5) (6,5) (7,5) (0,6) (0,7) (2,6) (2,7) (4,6) (4,7) (6,6) (6,7) (0,6) (1,6) (2,6) (3,6) (4,6) (5,6) (6,6) (7,6) (1,6) (1,7) (3,6) (3,7) (5,6) (5,7) (7,6) (7,7) (0,7) (1,7) (2,7) (3,7) (4,7) (5,7) (6,7) (7,7) 77 © Systèmes Distribués - K. Yétongnon Systémes Distribués 2004 – 2005 K. Yétongnon Communication inter-processeurs Opérations de base 78 © Systèmes Distribués - K. Yétongnon Introduction et motivation Motivations : z Identifier des opérations de base qui peuvent être combinées pour réaliser des communications plus complexes z Calculer les coûts de communication 79 © Systèmes Distribués - K. Yétongnon Introduction et motivation z Importance de la communication ou échange de données sur la performance des algorithmes parallèles z Nombre réduit de types d'opérations servant de base à la communication inter processeurs Types de liens de communication z z Monodirectionnel Pi z Pj Bidirectionnel Pi Pj Half-duplex : Communication dans une seule direction à la fois 9 Full-duplex : Communications simultanées dans les 2 directions 9 © Systèmes Distribués - K. Yétongnon 80 Introduction et motivation z Interface de communication d'un processeur z z Mono port, un seul port de communication 9 Envoi et réception simultanés de messages impossible 9 Un seul transfert (envoi ou réception) à la fois Multiple : un processeur a deux ou plusieurs ports de communication et peut donc être relié à plusieurs liens de communication 81 © Systèmes Distribués - K. Yétongnon Introduction et motivation z Hypothèses de communication (dans la suite) z z z z z Communication en mode Store and forward Liens duplex de communication (possibilité de communication simultanées dans les deux sens sur un lien) Emission sur un seul lien à la fois à partir d'un processeur Réception sur un seul lien à la fois Un processeur peut émettre et recevoir un message en même temps sur deux liens différents 82 © Systèmes Distribués - K. Yétongnon Communication (Opérations de Base) Opérations de base z Transferts simples z Diffusion de messages (Broadcast) z z One-to-all broadcast sur 9 Anneau 9 Grille (TORE) 9 Hypercube All-to-all broadcast 9 Anneau 9 Grille (TORE) 9 Hypercube 83 © Systèmes Distribués - K. Yétongnon Communication de base Transfert de message entre deux processeurs Pi Pj l nombre de liens traverss par le message Coût de communication = ts + tw *m*l ts est le temps de préparation du message m est la longueur du message (mot ou octet) tw est le temps de transfert d’un mot l est le nombre de liens traversés par le message © Systèmes Distribués - K. Yétongnon 84 Communication de base z Envoi d'un message de taille m d'un processeur source S vers un processeur destination D Temps de transfert= ts + (tw)ml z z z z ts (start up time) tw (temps de transfert par unité de message l nombre de liens traversés par un message Bornes supérieures du temps de transfert : z z z Anneau, ts + (tw)m ⎣ p/2 ⎦ Grille, ts + (tw)m ⎣ ((p)1/2)/2 ⎦ Hypercube, ts + (tw)m log2p & Borne supérieure dépend du nombre maximal de liens traversés 85 © Systèmes Distribués - K. Yétongnon z Plusieurs types de transferts identifiés qui servent de base à l'échange de données inter-processeurs z z Transfert simple entre une source et une destination Diffusion (Broadcast) dans laquelle un message est envoyé à plusieurs destinataires par une ou plusieurs sources 9 One-to-all 9 All-to-all 9 All-to-one 9 K-to-all 86 © Systèmes Distribués - K. Yétongnon One-to-All broadcast Solution naïve Le processeur source P0 envoie le message M0 successivement aux processeurs P1, P2, … Pn-1 z M0 P0 M0 P0 M0 P0 P0 M0 P1 P2 ( P0 Æ P1 Æ P2 ) P3 ( P0 Æ P1 Æ P2 Æ P3 ) Pp-1 ( P0 Æ P1 Æ P2 Æ … ÆPp-1 ) Coût de communication = Σ (ts + tw m0 ) i = (ts + tw m0 )*( p(p+1)/2) 87 © Systèmes Distribués - K. Yétongnon One-to-all Broadcast z Un processeur source envoie le même message M à un ensemble de processeurs One-to-all broadcast M 0 1 … P-1 M M 0 1 M … P-1 Opération duale (Accumulation) z z Initialement : La source P0 contient le message M (taille m) Fin transfert : Plusieurs processeurs (p) ont une copie du message d'origine 88 © Systèmes Distribués - K. Yétongnon One-to-all Broadcast z Opération duale de One-to-all-Boradcast : Single-nodeaccumulation z z Chaque processeur contient un message de taille m Une opération associative est utilisée pour accumuler (aggrégation de) les différents sur un processeur destinataire. $ Single-node-accumulation peut être utilisée pour calculer Sum, Produit 9 Maximum, minimum 9 Opérations logiques 9 One-to-all broadcast M 0 1 … P-1 M M 0 1 Opération duale (Accumulation) © Systèmes Distribués - K. Yétongnon M … P-1 89 Communication de base Deux types de diffusion de messages : z All-to-All Broadcast : Plusieurs diffusions One-to-All simultanées dans lesquels chaque processeur joue le rôle de source Xp-1 0 1 … Xp-1 All-to-All broadcast p-1 … X1 Xp-1 … … X0 Xp-1 X1 X1 X1 X0 X0 X0 0 1 … p-1 Accumulation vers plusieurs noeuds 90 © Systèmes Distribués - K. Yétongnon One-to-All broadcast (Sur un anneau) z Solution naïve : envoyer séquentiellement (p-1) messages aux différents processeurs z z z Coût de communication élevé Le même message traverse plusieurs fois les mêmes processeurs Solution : chaque processeur garde une copie du message avant sa transmission vers un autre processeur 3 7 4 6 5 4 Coût de communication : 2 4 T = (ts + tw * m)⎡p/2⎤ où p est le nombre de processeurs 0 1 1 © Systèmes Distribués - K. Yétongnon 2 2 3 3 91 One-to-All broadcast (Sur un tore) Solution en deux phases : z Phase 1 : Diffusion One-to-All sure la première ligne 12 13 14 15 8 9 10 11 4 5 6 7 2 3 1 0 2 1 2 © Systèmes Distribués - K. Yétongnon 92 One-to-All broadcast (Sur un tore) Solution en deux phases : z Phase 2 : Chaque processeurs de la première ligne inite uune diffusion One-to-All sur la colonne correspondante 12 13 14 15 8 9 10 11 4 4 4 4 4 5 3 4 4 4 7 3 3 2 1 2 2 © Systèmes Distribués - K. Yétongnon 6 3 1 0 4 3 93 One-to-All broadcast (Sur un tore) Coût de communication : Broadcast ligne Tcom = (ts + twm) ⎡p(1/2)/2⎤ Broadcast colonne Tcom = (ts + twm) ⎡p(1/2)/2⎤ Coût de communication : T = 2 * (ts + tw * m)⎡ p(1/2)/ 2⎤ où (p) est le nombre de processeurs © Systèmes Distribués - K. Yétongnon 94 One-to-All broadcast (Sur un hypercube) z Solution en d phases pour un hypercube de dimension d A chaque étape le nombre de processeurs participant à la diffusion est multiplié par 3 6 2 3 2 3 2 4 1 0 1 3 7 3 5 Coût de communication : T = 2 * (ts + tw * m)*logp où (p) est le nombre de processeurs 95 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z z z Généralise la diffusion One-to-all. Permet d'initialiser p diffusion One-to-All simultanées Chaque processeur Pi envoie un message Mi de taille mi aux autres processeurs La diffusion All-to-all est utilisée dans plusieurs applications z z z z Produits matriciels Produit Matrice Vecteur Sommes préfixes Etc… 96 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast Sur un Anneau de 8 processeurs z Etape 1 1(6) 7 (7) 1(5) (6) 6 1(4) (5) 5 (4) 4 1(7) 1(3) (0) 0 1 1(0) (3) (2) (1) 2 1(1) 3 1(2) 97 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast Sur un Anneau de 8 processeurs z Etape 2 2(5) 7 (7,6) 2(4) (6,5) 6 2(3) (5,4) 5 (4,3) 4 2(6) 2(2) (0,7) (2,1) (1,0) 0 1 2(7) (3,2) 2 2(0) 3 2(1) 98 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast Sur un Anneau de 8 processeurs z Etape 3 3(4) 7 3(3) 6 (7,6,5) 3(2) 5 (6,5,4) 4 (5,4,3) (4,3,2) 3(5) 3(1) (0,7,6) 0 1 3(6) (2,1,0) (1,0,7) (3,2,1) 2 3(7) 3 3(0) 99 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast Sur un Anneau de 8 processeurs z Etape 7 7(0) 7 7(7) 6 (7,6,5,4,3,2,1) 7(6) 5 (6,5,4,3,2,1,0) (5,4,3,2,1,0,7) 4 (4,3,2,1,0,7,6) 7(1) 7(5) (0,7,6,5,4,3,2) 0 7(2) (1,0,7,6,5,4,3) (2,1,0,7,6,5,4) 1 2 7(3) (3,2,1,0,7,6,5) 3 7(4) 100 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z Sur un Anneau de 8 processeurs z z z Après (p-1) étapes, chaque processeur Pi a recu tous les messages A l'étape i, un transfert de message (taille m) est envoyé d'un processeur vers un processeur directement connecté. Le coût Ti de ce transfert est Ti = ts + tw m Coût total : Total : Tcom = Σ Ti = (p-1) (ts + twm) 101 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z Algorithme pour un anneau de p processeurs Processeur i Input : message, mon-id Output : Messages diffusés Begin gauche = (mon-id – 1) mod p; droite = (mon-id + 1) mod p; résultat = message mess = message for i = 1 to p-1 do begin send (mess, droite) receive (mes, gauche) résultat = résultat ∪ mess endfor End 102 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z Sur une TORE 2D La diffusion se fait en deux phases : z z Une diffusion All-to-all sur chaque ligne de la grille. A la fin de cette étape chaque processeur Pi détient un message Mi de taille égale à (p1/2)m Une diffusion All-to-all sur les colonnes de la grille 103 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs 6 (6) 3 7 8 (7) 4 (3) 0 5 (4) 1 (0) (8) (5) Diffusions All-to-All sur Chaque ligne 2 (1) (2) Début Phase 1 104 © Systèmes Distribués - K. Yétongnon All-to-all Broadcast z Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs 6 (6,7,8) 3 7 8 (6,7,8) 4 (3,4,5) (6,7,8) 5 (3,4,5) (3,4,5) Début Phase 2 0 1 (0,1,2) 2 (0,1,2) Diffusions All-to-All sur Chaque ligne © Systèmes Distribués - K. Yétongnon (0,1,2) 105 All-to-all Broadcast Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs Coût de communication z Total = Coût phase 1 + coût phase 2 = (p1/2 -1)(ts + twm) + (p1/2-1) (ts + tw (p1/2)m) 106 © Systèmes Distribués - K. Yétongnon