Þ logarithmische Laufzeit bei | n | Prozessoren für n Input-Knoten |
2 |
die benötigte Zeit ist dann O( | T(n)P(n) | ) |
p |
O( | T(n)P(n) | ) Zeit für eine Zahl p ≤ P(n) |
p |
O( | C(n) | + T(n)) Zeit für eine beliebige Zahl von p Prozessoren |
p |
1 globalRead(A[i],a) 2 globalWrite(a,B[i]) 3 for k:=1 to log(n) do |
||
4 if i≤ | n | then |
2k | ||
5 globalRead(B[2i-1],x) 6 globalRead(B[2i],y) 7 z:=x+y 8 globalWrite(z;B[i]) 9 if i=1 then globalWrite(z;S) end for |
auf Höhe k werden | n | Prozessoren benötigt |
2k |
die benötigte Zeit ist dann O( | T(n)P(n) | ) |
p |
O( | T(n)P(n) | ) Zeit für eine Zahl p ≤ P(n) |
p |
O( | C(n) | + T(n)) Zeit für eine beliebige Zahl von p Prozessoren |
p |
l= | n | ist die Größe des Teilproblems, dass einer der Prozessoren am Anfang lösen muss |
p |
(es gilt k-h-q ≥ 0) | n | ≥ p |
2k |
1 for 1≤i≤n pardo 2 setze B[i]=A[i] //eine time-Unit 3 for h:=1 to log(n) //do Ebenen nacheinander |
|
||
4 for 1 ≤ i ≤ | n | pardo | |
2h | |||
5 B[i]:=B[2i-1]+B[2i] innerhalb der Ebene parallel! |
→Einsatz von | n | Prozessoren für die Berechnung der log n langen Teilsummen |
log(n) |
C(n) = | n log n
mit n Prozessoren
|
Grund: bei Verwendung von nur | n | Prozessoren sind weniger Prozessoren idle |
log n |
j-te "verbraucht" | n | Operationen für 2 ≤ j ≤ 1+ log n |
2j-1 |
die work ist damit W(n) = n + Σ | log n | n | + 1 Î O(n) |
j=1 | 2j |
die benötigte Zeit ist dann O( | T(n)P(n) | ) |
p |
O( | T(n)P(n) | ) Zeit für eine Zahl p ≤ P(n) |
p |
O( | C(n) | + T(n)) Zeit für eine beliebige Zahl von p Prozessoren |
p |
→Einsatz von | n | Prozessoren für die Berechnung der log n langen Teilsummen |
log(n) |
C(n) = | n log n
mit n Prozessoren
|
Grund: bei Verwendung von nur | n | Prozessoren sind weniger Prozessoren idle |
log n |
Speedup: Sp(n) = | T*(n) | |
Tp(n) |
Effizienz Ep(n) = | T1(n) | |
p·Tp(n) |
Þ Ep(n) ≤ | T1(n) | |
p·T∞(n) |
Tp(n) ≤ \floor{ | W(n) | } + T(n) parallelen Schritten simulieren |
p |
jeder Schritt Wi kann in \ceil{ | Wi(n) | } Parallel-Schritten mit p Prozessoren realisiert werden |
p |
Zahl der Takte ≤ \sum{i}\ceil{ | Wi(n) |
|
||||||||
p |
Tp(n) = O( | T*(n) | + T(n)) |
p |
Þ Speedup Sp(n) = Ω( | T*(n) |
|
||||
|
Þ optimaler Speedup (Sp(n) = Θ(p)) für p = O( | T*(n) | ) |
T(n) |