106
1 Systèmes Distribués - K. Yétongnon Systémes Distribués 2004 – 2005 K. Yétongnon Modèles de Parallélisme

Modèles de Parallélisme

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Modèles de Parallélisme

1

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Modèles de Parallélisme

Page 2: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

2

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

Page 3: Modèles de Parallélisme

3

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Traitement Parallèle

Modèles Graphes

Page 4: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

4

Modèles Graphes

Ceci sera fait en TD et par des exemples dans d’autres parties du cours

Page 5: Modèles de Parallélisme

5

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Traitement Parallèle

Modèles PRAM

Page 6: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

6

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

Page 7: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

7

Modèle PRAM

Classification de Flynn

SINGLE MULTIPLE

SINGLE SISD SIMD

MULTIPLE MISD MIMD

Flux de données

Flu

x d

’In

stru

ctio

ns

Page 8: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

8

Modèle PRAM

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

Page 9: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

9

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

Page 10: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

10

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)

A chaque étape, certains processeurs sont inactifs

Ce 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.

Plutôt adapté aux architectures MIMD

Page 11: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

11

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 iInput : (1) A, B (2) i, identité du processeurOutput : (1) CBegin

If ( B==0) C = AElse C = A/B

End

Page 12: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

12

Modèle PRAM

Etape 1

A : 7

B : 0

C : 7 (Actif, B=0)

A : 2

B : 1

C : 0 (Inactif, B0)

A : 4

B : 2

C : 0 (Inactif, B0)

A : 5

B : 0

C : 5 (Actif, B=0)

Processeur 3Processeur 2Processeur 1Processeur 0

Etape 2

A : 7

B : 0

C : 7 (Inactif, B=0)

A : 2

B : 1

C : 2 (Actif, B0)

A : 4

B : 2

C : 2 (Actif, B0)

A : 5

B : 0

C : 5 (Inactif, B=0)

Processeur 3Processeur 2Processeur 1Processeur 0

Initial

A : 7

B : 0

C : 0

A : 2

B : 1

C : 0

A : 4

B : 2

C : 0

A : 5

B : 0

C : 0

Processeur 3Processeur 2Processeur 1Processeur 0

Page 13: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

13

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)

Page 14: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

14

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 concurrentesQu'est ce qu'on écrit dans une adresse mémoire en cas d'écritures concurrentes?

Page 15: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

15

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)

Page 16: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

16

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

Page 17: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

17

Modèle PRAM

Instructions spéciales pour lire et écrire en mémoire globale

Global read (X, x)

Global write (Y, y)

Page 18: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

18

Modèle PRAMExemple de Calcul (1) : Produit Matrice Vecteur

Produit Matrice-Vecteur Y = AXA est une matrice n x n, X un vecteur de taille n p processeurs opérant en mode asynchrone, pn et r = n/p

Y1Y2….

Yn

A1,1 A1,2 … A1,nA2,1 A2,2 … A2,n ……..

A n,1 An,2 ... An,n

=

X1X2….

Xn

X

Mémoire Globale

P1 P2 Pp

Page 19: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

19

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?

Page 20: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

20

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

A =

A1A2….

Ap

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

=

A1

Ap

r lignes

r lignes

Processeur Pi calcule le produit matriciel partiel Yi = Ai * X

Page 21: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

21

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

A1,1 A1,2 … A1,n …….Ar,1 A2,2 … A2,n

X1X2….Xn

X

Ar+1,1 Ar+1,2 … Ar+1,n …….A2r,1 A2r,2 … A2r,n

X1X2….Xn

X

A(p-1)r,1 A(p-1)r,2 …A(p-1)r,n …….Apr,1 Apr,2 … Apr,n

X1X2….Xn

X

Y1Y2….Yr

Y(p-1)r+1Y(p-1)r+2….Ypr

Yr+1Yr+2….Y2r

P1

P2

Pp

Page 22: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

22

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

Page 23: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

23

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)

Outputy = 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

Begin1. Global read ( x, z)2. global read (A((i-1)r + 1 : ir, 1:n), B)3. calculer W = Bz4. global write (w, y(i-1)r+1 : ir))

End

Page 24: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

24

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)

Page 25: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

25

Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur

Autre solution : Partition Verticale de la matrice A + Partition du vecteur X

Y1Y2

….

Yn

A1,1 … A1,r A2,1 … A2,r An,1 … An,r

X1 … Xr

A1

X1

*

r colonnesProcesseur P1

A1,(p-1)r +1 ... A1,prA2,(p-1)r +1 ... A2,pr

An,(p-1)r +1 ... An,prX(p-1)r +1 ... Xpr

Ap

Xp

*

r colonnesProcesseur Pp

……..

Page 26: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

26

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

Nécessite une synchronisation en fin de phase 1. Toutes les valeurs Zi doivent être disponibles avant le début de la phase 2

Page 27: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

27

Modèle PRAMExemple de Calcul (2) : Produit Matrice Vecteur

Algorithme exécuté par le processeur Pi

Begin1. Global read ( x( (i-1)r +1 : ir) , z)2. global read (A(1:n, (i-1)r + 1 : ir), B)3. calculer W = Bz4. Synchroniser les processeurs Pi5. global write (w, y(i-1)r+1 : ir))

End

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

Page 28: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

28

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 Xise 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 Ades écritures concurrentes sur le vecteur final Y

Architecture requise : PRAM ERCW ( avec résolution de conflit d’écriture SUM)

Page 29: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

29

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.

Page 30: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

30

Modèle PRAMExemple de Calcul (3) : Somme de n entiers

B(1)=A(1)

B(2)=A(2)

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

B(1) B(2) B(3) B(4)

P1 P2 P3 P4

B(1) B(2)

P1 P2

B(1)

S=B(1)

P1

P1

Niveau >1, Pi calculeB(i) = B(2i-1) + B(2i)

Niveau 1, Pi calculeB(i) = A(i)

Page 31: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

31

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

OutputS : où S= A(1) + A(2) + …. . A(n)

Variables locales à Pin : nombre d’éléments

i : identité du processeur Pi

Begin1. 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

Page 32: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

32

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.

Page 33: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

33

Modèle PRAMExemple de Calcul (4) : Produit de matrice C = AB

P0,0,3 C0,0,3 = A00 * B03 + A01 * B13 + A02 * B23 + A03 * B33

C0,0,0

C0,0,1

C0,0,2

C0,0,3

C00 =

P0,0,3

P0,0,2

P0,0,1

P0,0,0

C0,1,0 C0,2,0 C0,3,0C0,0,0

Page 34: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

34

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

Page 35: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

35

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,l lisent l'élément A(i,l) en même temps

Nécessité d'une architecture CREW

Page 36: Modèles de Parallélisme

36

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Traitement Parallèle

Modèles Réseaux

Page 37: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

37

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)

Page 38: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

38

Modèle RéseauExemple (1) : Produit Matrice Vecteur

Matrix-Vector multiplication on a linear arrayGiven an nxn matrix A = [aij], i,j [1,n] and an n order

vector X=[xi], compute the product Y=Ax

J=1

n

Y=[yi], where yi = aij*xj

Systolic array algorithm for n=4

x4 x3 x2 x1

a14

a13

a12

a11

a24

a23

a22

a21

a34

a33

a32

a31

a44a43

a42

a41

. ..

.

.

.

P1 P2 P3 P4

Page 39: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

39

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, ….

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

• 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

Page 40: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

40

Modèle RéseauExemple (1) : Produit Matrice Vecteur

J=1

4 y2 = a2j*xj

J=1

4 y3 = a3j*xj

J=1

4 y4 = a4j*xj

J=1

4 y1 = a1j*xj

x2

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

Step1

2

3

4

5

6

7

x1

x3

x4

x1

x2 x1

x1

x1

x2

x2

x2 x1

x3

x3

x3

x3 x2 x1

x4

x4

x4

Page 41: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

41

Modèle RéseauExemple (1) : Produit Matrice Vecteur

Systolic array algorithm: Time-Cost analysis

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

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 P4idle:

3 Add; 3 Mult; active: P2,P3,P4idle: P1

2 Add; 2 Mult; active: P3,P4idle: P1,P2

1 Add; 1 Mult; active: P4idle: P1,P2,P3

Page 42: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

42

Modèle RéseauExemple (1) : Produit Matrice Vecteur

Systolic array algorithm: Time-Cost analysis

x2

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

P1 P2 P3 P4

Step1

2

3

4

5

6

7

x1

x3

x4

x1

x2 x1

x1 x2

x2

x3

x3

x3

x4

x4

x4

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 P4idle:

3 Add; 3 Mult; active: P2,P3,P4idle: P1

2 Add; 2 Mult; active: P3,P4idle: P1,P2

1 Add; 1 Mult; active: P4idle: P1,P2,P3

Page 43: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

43

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 :

J=1

n

C=[cij], where cij = aik*bkj

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.

Page 44: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

44

Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh

Example: Systolic mesh algorithm for n=4

STEP 1

(1,1)

(2,1)

(3,1)

(4,1)

(1,2) (1,3) (1,4)

(2,4)(2,3)(2,2)

(3,4)(3,3)(3,2)

(4,4)(4,3)(4,2)

a14a13a12a11

a24a23a22a21

a34a33a32a31 . .

a44a43a42a41 . . ..

b41 b3 b21 b11

b42 b32 b22 b12 .

b43 b33 b23 b13 . .

b44 b34 b24 b14 ..

Page 45: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

45

Modèle Réseau Exemple (2) : Matrix multiplication on a 2-D nxn Mesh

Example: Systolic mesh algorithm for n=4

STEP 5

a11

a24 a33 a42b41 b31 b21

a14

a13

a12

b42

b33

b24

b32 b22 b12

b23 b13

b14

a23 a32 a41

a22 a31

a21

b43

b34b44

b11

a34 a43a44 A

B

Page 46: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

46

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)

Page 47: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

47

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

N=4

X4 X3 X2 X1

P1 P2 P3 P4

a13

a12

a11

a14

a22

a21

a24

a23

a31

a34

a33

a32

a44

a43

a42

a41

Xi

aij

This algorithm requires N steps for a matrix-vector multiplication

Page 48: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

48

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

X1 X2 X3 X4

P1 P2 P3 P4

a12

a13

a14

a11

a23

a24

a21

a22

a34

a31

a32

a33

a41

a42

a43

a44

Xi

aij

N=4

Diagonal

Page 49: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

49

Modèle Réseau Exemple (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

Page 50: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

50

Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around

Step 1

a11 a12 a13 a14b11 b12 b13 b14

a21

a31

a41

b21

b31

b41

b22 b23 b24

b32 b33 b34

b42 b43 b44

a22 a23 a24

a32 a33 a34

a42 a43 a44

Page 51: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

51

Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around

Step 2Rearrange Data a11 a12 a13 a14

b11 b22 b33 b44

a22

a33

a44

b21

b31

b41

b32 b43 b14

b42 b13 b24

b12 b23 b34

a23 a24 a21

a34 a31 a32

a41 a42 a43

Left Shift

Up Shift

Page 52: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

52

Modèle Réseau Exemple (4) : Matrix multiplication on a 2D Mesh with Wrap around

a11 a12 a13 a14b11 b22 b33 b44

a22

a33

a44

b21

b31

b41

b32 b43 b14

b42 b13 b24

b12 b23 b34

a23 a24 a21

a34 a31 a32

a41 a42 a43

Step 3Multiply Add and Move Data

c21 = a22b21 + a21b11 + a24b41 + a23b33

Data Move at Cell ij

bkj

aik

Data Move at Cell ij

aik*bkjk=1

n

Cij =

Page 53: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

53

Modèle Réseau Exemple (5) : Sum of N=2P numbers on a p-hypercube

Compute S = xi, xi is assigned to processor Pi

0 1

32

4 5

6 7

(X0)

(X2)

(X1)

(X7)

(X3)

(X4) (X5)

(X6)

Page 54: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

54

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

0 1

32

4 5

6 7

(X0+X4)

(X2+X6)

(X1+X5)

(X3+X7)

Page 55: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

55

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

0 1

32

4 5

6 7

(X0+X4+X2+X6) (X1+X5+X3+X7)

P Processeurs actifs P Processeurs inactifs

Page 56: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

56

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

P Processeurs actifs P Processeurs inactifs

0 1

32

4 5

6 7

S = (X0+X4+X2+X6+ X1+X5+X3+X7)

The sum of the N numbers is accumulated on node P0

Page 57: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

57

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 idOutput: S= X[0]+…+X[N], stored on processor P0

Processor PiBegin

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 beginreceive(Si, Partner)S = S + Si end

if My_id AND 2j 0 beginsend(S, Partner)exit end

end end

Page 58: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

58

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

0 1

32

4 5

6 7

X

Initial distribution of data

Page 59: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

59

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

X0 1

32

4 5

6 7

XStep 1 Step 20 1

32

4 5

6 7

X X

X X

X X0 1

32

4 5

6 7

XX

X X

XX

Step 3

P Processeurs actifs P Processeurs inactifs

Page 60: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

60

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 idOutput: All processor Pi contain X

Processor PiBegin

If i = 0 then B = XMy_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)

endend

Page 61: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

61

Exercice

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

Un réseau linéaire de 3 processeurs Un anneau de 3 processeurs

Page 62: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

62

Exercice

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

Une grille 3 X 3 Un tore 3X3 (grille avec retour)

Page 63: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

63

Exercice

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

Page 64: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

64

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

Page 65: Modèles de Parallélisme

65

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Calculs Matriciels

(2ème visite)

Page 66: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

66

Partitions des données

Si le nombre de processeurs est égal ou supérieur au nombre de données On associe à chaque processeur une unité de chaque donnée

Si le nombre de processeurs est inférieur au nombre de données On associe à chaque processeur un bloc de données à traiter

Comment réaliser les partitions de données

Page 67: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

67

Partition des données

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

P0 P1 P2 P3

•Découpage en bandes suivant les colonnes

•Un ensemble de n colonnesconsécutives est affecté à chaque processeur Pi

Page 68: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

68

Partition des données

2

3

0

1

P0 P1 P2 P3

•Découpage en bandes suivant les colonnes

•Répartition cyclique

5

6

7

4

9 11

8 10

13

12 14

15

Page 69: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

69

Partition des données

•Découpage en bandes suivant les lignes

•Un ensemble de n lignes consécutives est affecté à chaque processeur

P0

P1

P2

P3

0

1

2

3

4

5

6

7

14

15

13

12

10

11

9

8

Page 70: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

70

Partition des données

•Découpage en bandes suivant les lignes

•Répartition cyclique

P0

P1

P2

P3

8

9

11

10

12

13

15

14

4

5

7

6

0

1

3

2

Page 71: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

71

Partition des données

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7)

(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)

(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)

(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)

(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7)

(0,0) (0,1) (0,2) (0,3)(0,4) (0,5) (0,6) (0,7)

(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)

(2,0) (2,4) (2,1) (2,5) (2,2) (2,6) (2,3) (2,7)

(6,0) (6,4) (6,1) (6,5) (6,2) (5,6) (6,3) (6,7)

(7,0) (7,4) (7,1) (7,5) (7,2) (7,6) (7,3) (7,7)

(3,0) (3,4) (3,1) (3,5) (3,2) (3,6) (3,3) (3,7)

(5,0) (5,4) (5,1) (5,5) (5,2) (5,6) (5,3) (5,7)

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

Répartition par BlocsRéguliers d’éléments consécutifs

Répartition par Blocscyclique

Page 72: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

72

Transposition de Matrice

Transposition d’une matrice nxn est une matrice AT

AT [i,j] = A [j,i] pour 0 ≤ i,j ≤ n

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

Page 73: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

73

Transposition de Matrice ( Grille n x n)

Exemple : Transposition d’une matrice 4x4 sur une grille carrée de 16 processeurs

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

(0,0) (0,1) (0,2) (0,3)

(1,0) (1,1) (1,2) (1,3)

(2,0) (2,1) (2,2) (2,3)

(3,0) (3,1) (3,2) (3,3)

Etapes de communication

Nombre de processeurs égalà n2 (nombre de données)

Page 74: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

74

Transposition de Matrice ( Grille n x n)

Phase 1

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7)

(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)

(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)

(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)

(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7)

Etapes de communication

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

Page 75: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

75

Transposition de Matrice ( Grille n x n)

Phase 2

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

(0,0) (0,1)

(0,2) (0,3)

(0,4) (0,5)

(0,6) (0,7)

(1,0) (1,1)

(1,2) (1,3)

(1,4) (1,5)

(1,6) (1,7)

(2,2) (2,3)

(2,4) (2,5)

(2,6) (2,7)

(3,2) (3,3)

(3,4) (3,5)

(3,6) (3,7)

(4,4) (4,5)

(4,6) (4,7)(5,4) (5,5)

(5,6) (5,7)

(6,6) (6,7)

(7,6) (7,7)

(2,0) (2,1)

(3,0) (3,1)

(4,0) (4,1)

(5,0) (5,1)

(4,2) (4,3)

(5,2) (5,3)

(6,0) (6,1)

(7,0) (7,1)

(6,2) (6,3)

(7,2) (7,3)

(6,4) (6,5)

(7,4) (7,5)

P0 P1 P2 P3

P4 P5 P6 P7

P8 P9 P10 P11

P12 P13 P14 P15

(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7)

(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)

(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)

(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)

(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7)

Réarrangement local (Transposition)

Page 76: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

76

Transposition de Matrice ( Grille n x n)

Algorithme Récursif

(0,0) (0,1) (0,2) (0,3)

(1,0) (1,1) (1,2) (1,3)

(2,0) (2,1) (2,2) (2,3)

(3,0) (3,1) (3,2) (3,3)

(0,4) (0,5) (0,6) (0,7)

(1,4) (1,5) (1,6) (1,7)

(2,4) (2,5) (2,6) (2,7)

(3,4) (3,5) (3,6) (3,7)

(4,0) (4,1) (4,2) (4,3)

(5,0) (5,1) (5,2) (5,3)

(6,0) (6,1) (6,2) (6,3)

(7,0) (7,1) (7,2) (7,3)

(4,4) (4,5) (4,6) (4,7)

(5,4) (5,5) (5,6) (5,7)

(6,4) (6,5) (6,6) (6,7)

(7,4) (7,5) (7,6) (7,7)

(0,0) (0,1) (0,2) (0,3)

(1,0) (1,1) (1,2) (1,3)

(2,0) (2,1) (2,2) (2,3)

(3,0) (3,1) (3,2) (3,3)

(4,0) (4,1) (4,2) (4,3)

(4,4) (4,5) (4,6) (4,7)

(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)

(7,0) (7,1) (7,2) (7,3)

(7,4) (7,5) (7,6) (7,7)

(0,4) (0,5) (0,6) (0,7)

(1,4) (1,5) (1,6) (1,7)

(2,4) (2,5) (2,6) (2,7)

(3,4) (3,5) (3,6) (3,7)

Page 77: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

77

Transposition de Matrice ( Grille n x n)

Algorithme récursif

(0,0) (0,1)

(1,0) (1,1)

(2,0) (2,1)

(2,2) (2,3)

(3,0) (3,1)

(3,2) (3,3)

(4,0) (4,1)

(4,4) (4,5)

(5,0) (5,1)

(5,4) (5,5)

(6,0) (6,1)

(6,2) (6,3)

(6,4) (6,5)

(6,6) (6,7)

(7,0) (7,1)

(7,2) (7,3)

(7,4) (7,5)

(7,6) (7,7)

(0,4) (0,5)

(0,6) (0,7)

(1,4) (1,5)

(1,6) (1,7)

(2,6) (2,7)

(3,6) (3,7)

(0,2) (0,3)

(1,2) (1,3)

(4,2) (4,3)

(5,2) (5,3)

(2,4) (2,5)

(3,4) (3,5)

(4,6) (4,7)

(5,6) (5,7)

(0,0)

(0,1) (1,1)

(2,0) (3,0)

(2,2) (3,2)

(2,1) (3,1)

(2,3) (3,3)

(4,0) (5,0)

(4,4) (5,4)

(4,1) (5,1)

(4,5) (5,5)

(6,0) (7,0)

(6,2) (7,2)

(6,4) (7,4)

(6,6) (7,6)

(6,1) (7,1)

(6,3) (7,3)

(6,5) (7,5)

(6,7) (7,7)

(0,4) (1,4)

(0,6) (1,6)

(0,5) (1,5)

(0,7) (1,7)

(2,6) (3,6)

(2,7) (3,7)

(0,2) (1,2)

(0,3) (1,3)

(4,2) (5,2)

(4,3) (5,3)

(2,4) (3,4)

(2,5) (3,5)

(4,6) (5,6)

(4,7) (5,7)

(1,0)

Page 78: Modèles de Parallélisme

78

Systèmes Distribués - K. Yétongnon

Systémes Distribués2004 – 2005K. Yétongnon

Communication inter-processeurs

Opérations de base

Page 79: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

79

Introduction et motivation

Motivations :

Identifier des opérations de base qui peuvent être combinées pour réaliser des communications plus complexes

Calculer les coûts de communication

Page 80: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

80

Introduction et motivation

Importance de la communication ou échange de données sur la performance des algorithmes parallèles

Nombre réduit de types d'opérations servant de base à la communication inter processeurs

Types de liens de communication Monodirectionnel

Bidirectionnel

Half-duplex : Communication dans une seule direction à la fois Full-duplex : Communications simultanées dans les 2 directions

PjPi

PjPi

Page 81: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

81

Introduction et motivation

Interface de communication d'un processeur Mono port, un seul port de communication

Envoi et réception simultanés de messages impossible 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

Page 82: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

82

Introduction et motivation

Hypothèses de communication (dans la suite)

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

Page 83: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

83

Communication (Opérations de Base)

Opérations de base Transferts simples Diffusion de messages (Broadcast)

One-to-all broadcast sur Anneau Grille (TORE) Hypercube

All-to-all broadcast Anneau Grille (TORE) Hypercube

Page 84: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

84

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

Page 85: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

85

Communication de base

Envoi d'un message de taille m d'un processeur source S vers un processeur destination D

Temps de transfert= ts + (tw)ml

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

Page 86: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

86

Plusieurs types de transferts identifiés qui servent de base à l'échange de données inter-processeurs Transfert simple entre une source et une destination Diffusion (Broadcast) dans laquelle un message est envoyé à

plusieurs destinataires par une ou plusieurs sources One-to-all All-to-all All-to-one K-to-all

Page 87: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

87

One-to-All broadcast

Solution naïve

Le processeur source P0 envoie le message M0 successivement aux processeurs P1, P2, … Pn-1

P1P0M0

P2P0M0

P3P0M0

Pp-1P0M0

( P0 P1 P2 )

( P0 P1 P2 P3 )

( P0 P1 P2 … Pp-1 )

Coût de communication = (ts + tw m0 ) i = (ts + tw m0 )*( p(p+1)/2)

Page 88: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

88

One-to-all Broadcast

Un processeur source envoie le même message M à un ensemble de processeurs

Initialement : La source P0 contient le message M (taille m) Fin transfert : Plusieurs processeurs (p) ont une copie du message

d'origine

0 1 P-1 0 1 P-1

M M M M… …

One-to-all broadcast

Opération duale (Accumulation)

Page 89: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

89

One-to-all Broadcast

Opération duale de One-to-all-Boradcast : Single-node-accumulation 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 Maximum, minimum Opérations logiques

0 1 P-1 0 1 P-1

M M M M… …

One-to-all broadcast

Opération duale (Accumulation)

Page 90: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

90

Communication de base

Deux types de diffusion de messages :

All-to-All Broadcast : Plusieurs diffusions One-to-All simultanées dans lesquels chaque processeur joue le rôle de source

0 1 p-1…X0

0 1 p-1…

All-to-All broadcast

Accumulation vers plusieurs noeuds

X1 Xp-1

X0

X1

Xp-1 …

X0

X1

Xp-1 …

X0

X1

Xp-1

Page 91: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

91

One-to-All broadcast (Sur un anneau)

Solution naïve : envoyer séquentiellement (p-1) messages aux différents processeurs 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

0 1 2 3

7 6 5 4

1 2 3

43

2 4

Coût de communication :

T = (ts + tw * m)p/2 où p est le nombre de processeurs

Page 92: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

92

One-to-All broadcast (Sur un tore)

Solution en deux phases : Phase 1 : Diffusion One-to-All sure la première ligne

0

4

8

12

1

5

9

13

2

6

10

14

3

7

11

15

1 2

2

Page 93: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

93

One-to-All broadcast (Sur un tore)

Solution en deux phases : Phase 2 : Chaque processeurs de la première ligne inite uune

diffusion One-to-All sur la colonne correspondante

0

4

8

12

1

5

9

13

2

6

10

14

3

7

11

15

1 2

2

3 3 3 3

4 4 4 4

4 4 4 4

Page 94: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

94

One-to-All broadcast (Sur un tore)

Coût de communication :

Coût de communication :

T = 2 * (ts + tw * m) p(1/2)/ 2 2 où (p) est le nombre de processeurs

Broadcast ligne

Tcom = (ts + twm) p(1/2)/2

Broadcast colonne

Tcom = (ts + twm) p(1/2)/2

Page 95: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

95

One-to-All broadcast (Sur un hypercube)

Solution en d phases pour un hypercube de dimension d

A chaque étape le nombre de processeurs participant à la diffusion est multiplié par

0 1

2 3

4 5

6 7

12

2

3

3

3

3

Coût de communication :

T = 2 * (ts + tw * m)*logpoù (p) est le nombre de processeurs

Page 96: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

96

All-to-all Broadcast

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 Produits matriciels Produit Matrice Vecteur Sommes préfixes Etc…

Page 97: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

97

All-to-all Broadcast

Sur un Anneau de 8 processeurs Etape 1

0 1 2 3

7 6 5 4

1(0) 1(1) 1(2)

1(3)1(7)

1(6) 1(5) 1(4)

(0) (1) (2) (3)

(4)(5)(6)(7)

Page 98: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

98

All-to-all Broadcast

Sur un Anneau de 8 processeurs Etape 2

0 1 2 3

7 6 5 4

2(7) 2(0) 2(1)

2(2)2(6)

2(5) 2(4) 2(3)

(0,7) (1,0) (2,1) (3,2)

(4,3)(5,4)(6,5)(7,6)

Page 99: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

99

All-to-all Broadcast

Sur un Anneau de 8 processeurs Etape 3

0 1 2 3

7 6 5 4

3(6) 3(7) 3(0)

3(1)3(5)

3(4) 3(3) 3(2)

(0,7,6) (1,0,7) (2,1,0) (3,2,1)

(4,3,2)(5,4,3)(6,5,4)(7,6,5)

Page 100: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

100

All-to-all Broadcast

Sur un Anneau de 8 processeurs Etape 7

0 1 2 3

7 6 5 4

7(2) 7(3) 7(4)

7(5)7(1)

7(0) 7(7) 7(6)

(0,7,6,5,4,3,2) (1,0,7,6,5,4,3) (2,1,0,7,6,5,4) (3,2,1,0,7,6,5)

(4,3,2,1,0,7,6)(5,4,3,2,1,0,7)(6,5,4,3,2,1,0)(7,6,5,4,3,2,1)

Page 101: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

101

All-to-all Broadcast

Sur un Anneau de 8 processeurs

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)

Page 102: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

102

All-to-all Broadcast

Algorithme pour un anneau de p processeurs

Processeur i Input : message, mon-idOutput : Messages diffusésBegin

gauche = (mon-id – 1) mod p;droite = (mon-id + 1) mod p;résultat = messagemess = messagefor i = 1 to p-1 do begin

send (mess, droite)receive (mes, gauche)résultat = résultat messendfor

End

Page 103: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

103

All-to-all Broadcast

Sur une TORE 2D

La diffusion se fait en deux phases : 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

Page 104: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

104

All-to-all Broadcast

Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs

0 1 2

3 4 5

6 7 8

(0) (1) (2)

(3) (4) (5)

(6) (7) (8)

Diffusions All-to-All sur Chaque ligne

Début Phase 1

Page 105: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

105

All-to-all Broadcast

Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs

0 1 2

3 4 5

6 7 8

(0,1,2) (0,1,2) (0,1,2)

(3,4,5) (3,4,5) (3,4,5)

(6,7,8) (6,7,8) (6,7,8)

Diffusions All-to-All sur Chaque ligne

Début Phase 2

Page 106: Modèles de Parallélisme

Systèmes Distribués - K. Yétongnon

106

All-to-all Broadcast

Diffusion All-to-all sur une TORE 2D 3X3 de 9 processeurs

Coût de communication

Total = Coût phase 1 + coût phase 2

= (p1/2 -1)(ts + twm) + (p1/2-1) (ts + tw (p1/2)m)