Documente Academic
Documente Profesional
Documente Cultură
Exemple de algoritmi
paraleli.
Proiectare si analiza.
Prelucrare de matrici/masive regulate
de date
• Caracteristici: structuri masive regulate de date (tip matrice)
=> descompunere de date
• Scop: algoritm paralel eficient, cost-optimal, scalabil
• Puncte de variabilitate a solutiei:
– Descompunere
• 1D
• 2D
• 3D
– Granularitate:
• P=n
• P<n;
– Distributie: pe blocuri, ciclica
• Exemple:
– Inmultirea matrice-vector
– Sistem de n ecuatii liniare
– Modelarea bazata pe diferente finite
Reminder: performantele operatiilor
pentru comunicatii colective
Operatie Timp
One-to-one ts+m*tw
One-to-all broadcast
All-to-one reduction (ts+m*tw)*log(p)
All-to-all broadcast
All-to-all reduction ts* log(p) + tw*m*(p-1)
Exemplul 1
Inmultire matrice*vector
Inmultirea matrice-vector
• Comunicare:
– One-to-one communication (alinierea pe diagonala
a lui x): ts+tw*n/sqrt(p)
– One-to-all broadcast (difuzarea fiecarui x[j] pe
coloana j): (ts+tw*n/sqrt(p))*log(sqrt(p))
– All-to-one reduction (insumarea pe linii):
(ts+tw*n/sqrt(p))*log(sqrt(p))
• Calcule: n*n/p
• Tp≈n*n/p+ts*log(p)+tw*n/sqrt(p)*log(p)
Evaluarea performantelor – cazul 2D cu p<n*n procese
• W=O(p*log(p)*log(p))
Comparatia solutiilor: partitionare 1D vs. 2D
Inmultirea matrice*matrice
Inmultire matrice*matrice
• Matrici dense de dimensiune n x n : C =A x B.
• Complexitatea seriala este O(n3).
• Operatii matriceale pe blocuri: o matrice A de n*n elemente este echivalenta
cu o matrice de q*q blocuri Ai,j (0 ≤ i, j < q) unde fiecare bloc este o
submatrice de dimensiune (n/q) x (n/q)
• Se executa q3 inmultiri de matrici de dimensiune (n/q) x (n/q)
Inmultire matrice*matrice: paralelizare
prin descompunere de date 2D
• Matricile A si B de dimensiune n*n se
partitioneaza 2D in p blocuri Ai,j si Bi,j (0 ≤ i, j < )
de dimensiune
• Fiecare proces Pi,j detine initial Ai,j si Bi,j si
calculeaza blocul Ci,j al matricii rezultat
Inmultire matrice*matrice: paralelizare
prin descompunere de date 2D
• Pentru calculul submatricii Ci,j este nevoie de toate
submatricile Ai,k si Bk,j pentru 0 ≤ k < .
• All-to-all broadcast blocuri din A pe linii si blocuri din B
pe coloane.
• Inmultirea submatricilor (blocurilor) se face local
Evaluarea performantelor
• Operatiile de broadcast pe linii si pe coloane:
participa procesoare si se transmit n*n/p
cuvinte:
• Calculele pe care le realizeaza fiecare proces:
inmultiri de matrici de dimensiune
• Timpul paralel este aprox
• TP=O(log n)
Nu este cost-optimal
Inmultire matrice*matrice: algoritmul
Dekel-Nassimi-Sahni DNS
p=q3 <n3 procesoare
• Matricile sunt partitionate in blocuri de
(n/q) x(n/q).
• Algoritmul descris anterior se adapteaza
astfel incat lucreaza cu blocuri in loc de
elemente
Evaluarea performantelor – algoritmul
DNS cu p=q3<n3 procesoare
• Mutarea liniilor si coloanelor in alte plane: one-to-one
communication
• Difuzarile in plane: one-to-all broadcasts
A x b
Etapele rezolvarii sistemului prin
metoda Gauss de eliminare:
1. Reducerea sistemului la o forma tridiagonala
2. Substitutia regresiva
Reducerea sistemului la o forma
tridiagonala
A x b U x y
unde U matrice triangula ra superioara
Sistemul se aduce la aceasta forma printr - o serie de operatii algebrice
2 x0 2 x1 4 x2 2 x3 76 Ec1 se imparte la 2
x 3x 2 x x 52
0 1 2 3
Din Ec2 se scade 1*Ec1
3x0 2 x1 2 x2 x3 57
Din Ec3 se scade 3*Ec1
x0 x1 2 x2 1x3 38
14
2 x1
x1 4 x2 2 x3 57
x2 2 x3 26
Exemplu eliminare Gaussiana – etapa 2
x0 x1 2 x2 1x3 38
14
2 x1 Ec2 se imparte la 2
x1 4 x2 2 x3 57 Din Ec3 se scade -Ec2
x0 x1 2 x2 1x3 38
7
x1
4 x2 2 x3 50
x2 2 x3 26
Exemplu eliminare Gaussiana – etapa 3
x0 x1 2 x2 1x3 38
7
x1
4 x2 2 x3 50 Ec3 se imparte la -4
x0 x1 2 x2 1x3 38
7
x1
x2 0.5 x3 12.5
1.5 x3 13.5
Exemplu substitutii regresive
x0 x1 2 x2 1x3 38
7
x1
x2 0.5 x3 12.5
1.5 x3 13.5
Din ec4 : x3 9
In ec3 : x2 8
In ec2 : x1 7
In ec1 : x0 6
Paralelizare prin descompunere 1D pe linii
• Matricea A este partitionata pe linii intre n procese: procesul Pi detine linia
i a matricii pe care o transforma
• La un moment dat toate procesele executa aceeasi iteratie k
• Exista dependente de date intre instructiunile 12 (scadere) si 6 (impartire)
impartire
P0
scadere impartire
P1
scadere scadere impartire
P2
• Intr-un pas k:
– Calcule impartire (instructiunile 5-6): Procesul Pk:
n-k-1 operatii aritmetice de impartire
– Calcule scadere (instructiunile 11-12): procesele
Pi, k<i<n: 2*(n-k-1) operatii aritmetice( de
inmultire si scadere)
– Comunicare: one-to-all broadcast
Tcomm=(ts+(n-k-1)*tw)*log(n)
Evaluarea performantelor (continuare)
3 1
TP n (n 1) t S n log n t W n (n 1) log n
2 2
• Cost: Cost O(n log n)
3
• Timpul secvential: 2 3
W n
3
Descompunere 1D pe linii cu procesare pipeline
Scadere0 Scadere1
P3
Scadere0
P4
Scadere0
P5
Exemplu – pipeline pentru matrice 5*5
a) P0: Impartire0
b) P0: transmite Linia0
c) P1: transmite Linia0
d) P1: Scadere0; P2: transmite Linia0
Exemplu – pipeline pentru matrice 5*5 (cont.)
• Cazul p=n
• Numarul total de pasi in pipeline: 4*(n-1)
• Fiecare pas consta din una din operatiile:
– Impartire O(n)
– Scadere O(n)
– Comunicare directa O(n)
• Timpul total : Tp=O(n*n)
• Cost: O(n*n*n) – varianta pipeline este cost-optimala
Partitionare 1D, pipeline, distributie pe
blocuri
• Se utilizeaza p<n procese
• Fiecare proces detine n/p linii succesive
• Descompunere 1D, procesare pipeline
• Se schimba raportul dintre timpul de
comunicare si timpul de calcul:
– Impartire: (n-k-1)*n/p operatii, O(n*n/p)
– Scadere: 2*(n-k-1)*n/p operatii, O(n*n/p)
– Comunicare directa: (n-k-1) cuvinte, O(n)
Evaluarea performantelor – partitionare 1D,
pipeline, cu distrib pe blocuri
• Intr-un pas k:
a) one-to-all broadcast mesaj de lungime 1 la n-k
procese O(log(n-k))
b) Calcule impartire : 1 op aritm impartire
c) One-to-all broadcast mesaj de lungime 1 la n-k-1
procese O(log(n-k))
d) Calcule scadere : 2 op aritm impartire si scadere
O(1)
=> Operatiile de comunicare au o pondere mult
mai mare decat operatiile de calcul ! =>
solutia nu este cost-optimala
Paralelizare prin descompunere 2D,
p=n*n, cu procesare pipeline
Iteratia k:
• realizeaza impartirea elementului j de pe linia k
A[k,j] :=A[k,j]/A[k,k] in momentul in care
A[k,k] a ajuns la el (nu asteapta difuzarea lui
A[k,k] pe toata linia)
• Incepe difuzarea lui A[k,j] pe coloana imediat
dupa ce a fost calculat (nu asteapta realizarea
impartirilor pe toata linia)
• realizeaza scaderea A[i,j]:=A[i,j]-A[i,k]*A[k,j] in
momentul in care A[i,k] si A[k,j] sunt disponibili
Exemplu – pipeline pentru matrice
5*5, 2D cu 25 procese
Avansul fronturilor de
calcul:
Iteratia k=0
Iteratia k=1
Iteratia k=2
Evaluarea performantelor –
descompunere 2D, p=n*n, pipeline
• Toate procesele care executa operatii de comunicare respectiv de
calcul in cadrul unei iteratii se gasesc aliniate pe o diagonala
formand un front care se deplaseaza cu o pozitie inspre coltul
dreapta-jos la fiecare pas
• Un pas din pipeline: o impartire, o scadere sau o comunicare cu un
proces vecin => O(1)
• Frontul k=0: pleaca din P[0,0] spre P[n-1, n-1], ajunge in 4*n pasi
• Fiecare front k+1 este cu o linie diagonala in urma frontului k =>
se termina cu 2 pasi in urma predecesorului sau
• Frontul k=n-1 (ultimul front): se termina dupa 2*(n-1) pasi dupa
frontul k=0
• Total: 6*n pasi a O(1)
• Tp= O(n)
• Cost = O(n*n*n) = W
Descompunere 2D, p<n*n
• Partitionare 2D pe blocuri
• P procese organizate intr-un masiv
sqrt(p)*sqrt(p)
• Reduce comunicatiile interprocese
• Difuzeaza A[i,k] (n/sqrt(p) cuvinte) pe linie celor
sqrt(p) procese
• Difuzeaza A[k,j] (n/sqrt(p) cuvinte) celor sqrt(p)
procese
Evaluarea performantelor – descompunere
2D, distributie pe blocuri
• Un proces care contine o parte activa a matricii:
executa n*n/p operatii de calcul, comunica n/sqrt(p)
cuvinte pe linie si n/sqrt(p) cuvinte pe coloana
• Daca p << n*n, operatiile de calcul au o pondere mai
importanta decat comunicatiile => Tp= O(n*n*n/p),
Cost= O(n*n*n)
• Surplusul se datoreaza in mare masura incarcarii
inegale a proceselor care duce la procese inactive in
coltul stanga-sus al masivului de procese
Comparatia solutiilor: partitionare 1D vs. 2D
• Descompunere 1D
Exercitiu !
• Descompunere 2D
Rezolvarea sistemelor de ecuatii liniare
in practica
• Problema: daca in matricea coeficientilor exista
A[k,k]=0, alg de eliminare gaussiana nu se poate
aplica => se aplica tehnica pivotarii
• Exista si alti algoritmi mai performanti decat
eliminarea Gaussiana