Documente Academic
Documente Profesional
Documente Cultură
intrare
ieire
30 5
dup pasul 3
1 2
0 1 2 3 5 dup pasul 9
0 1 2 3 5 sfarsit faza 1
2 3 5
3 5
5
Msuri de performana
T timpul total necesar execuiei algoritmului paralel
P numarul de procesoare utilizate
In algoritmul prezentat, P = N i T = O(N).
G timpul de execuie al celui mai rapid algoritm secvenial
Pentru algoritmul secvential de ordonare,
G= O(N log N)
accelerarea S (speedup)
S = G/T
In algoritmul precedent,
S= O(N log N)/ O(N) = O(log N).
Ideal = accelerarea liniara S = O(P)
Exemplu cautarea unei valori intr-un sir de numere
se poate mereu?
sectiuni secventiale Legea lui Amdahl
procentajul f din totalul calculelor trebuie s se desfoare
secvenial
T = f * G + (1-f) * G / P
rezulta
S = G/T = 1 / (f + (1-f) / P)
costul C = T*P
in exemplu - C = O(N2).
eficiena E = G/C
este costul secvential / costul paralel
E = G/C = G/(TP) = S/P
in exemplu - E = O((log N)/N).
Modelul work-depth - al grafurilor orientate aciclice
Model de graf
fiecare intrare este reprezentata ca un nod fr arce de intrare
fiecare operatie este reprezentat ca un nod ale crui arce de intrare
provin de la nodurile care reprezint operanzii
o ieire este reprezentat ca un nod fr arce de ieire.
a[1]
a[2] +
a[3]
+ +
a[4]
a[5] +
+
a[6] +
a[7]
+
In figura: modelul de
a[8]
insumare a 8 numere
Modelul este independent de orice arhitectur i orice numr
concret de procesoare.
Pune n eviden:
lucrul efectuat de algoritm (numrul total de operaii)
adncimea (lungimea celui mai lung lan de dependene secveniale
din algoritm).
grad paralelism = lucru / adncime
a[1]
a[2] +
Exemplu: a[3]
+
schema de insumarea a n numere a[4]
+
lucrul = n a[5] +
+
adancimea = log n a[6] +
grad paralelism = n / log n a[7]
+
a[8]
Suma elementelor unui tablou
runda h=1 h=2 h=3
a[1] b[1] b[1] b[1] b[1] s
a[5] b[5]
Schema de executie
a[6] b[6] - copiaza datele in variabila de lucru b
- in fiecare pas h, lucreaza primele n/2h
a[7] b[7] procese
- procesul i aduna in b[i] valorile din
a[8] b[8] b[2*i-1] si b[2*i]
Calculul complexitii pe descrierea pseudocod
Pentru p procesoare:
fiecare procesor s executa secvential l = n/p operatii de copiere,
a valorilor incepand cu pozitia l*(s-1)+1
primele s-1 procesoare copiaza l*(s-1) valori
}
if (s = =1) S = B[1];
}
n/p + h=1, log n sup(n/(2hp)) + 1
<= n/p + h=1, log n (inf(n/(2hp)) + 1) + 1
<= n/p + n/ph=1, log n inf(1/(2h)) + log n + 1
<= n/p + n/p + log n + 1
rezulta: Tp(n) = O(n/p + log n) = W(n)/p + T(n)