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

Documents pareils