Dieser Idealfall wird umso besser angenähert, je länger die Vektoren sind, da dann die Startzeit und die Füllzeit der Pipeline vernachlässigt werden kann:
n D (n) = --------------- 90 MFLOPS ---------> 90 MFLOPS 8 (5 + 8 + (n-1)) n -> oo
n
1/2 1
-------------- 90 MFLOPS = - 90 MFLOPS => n = 8 - 1 = 7
8 + (n - 1) 2 1/2
1/2
3n = 5 + 8+(n-1),also 6.
S(n) 4 1
E(n) = ---- = -- = -
n 16 4
T(1) T(1) 32
S(n) = ---- ==> T(16) = ----- = -- = 8
T(n) S(16) 4
P(n) P(16) 40
I(n) = ---- = ----- = -- = 5
T(n) T(16) 8
T(1) (1-a) n T(n) - T(1) 1
T(n) = T(1) a + ---------- ==> a = ------------- = -
n (n-1) T(1) 5
T(oo) = T(1) a = 32/5Der maximale SpeedUp ist demzufolge 5.
Ich definiere die Spitze der Pyramide als Ebene 0, dann gilt: Jede Ebene i ist quadratisch und umfasst 2^i Knoten.
e e e+1
__ i 2 __ i 1 - 4 Summenformel
=> #Knoten = \ (2 ) = \ 4 = ------ der geometrischen
/_ /_ 1 - 4 Reihe!
i=0 i=0
Ein Knoten im Inneren der Pyramide hat 1 "Vater", 4 "Brüder" und 4 "Söhne", also 9 Nachbarn.
Ich definiere die Adressen als Tripel:
(Ebene i, Koordinate x, Koordinate y)(i, x, y starten bei 0)
Adressen:
Vater: (i - 1, x DIV 2, y DIV 2)
Brüder: (i , x + 1 , y )
(i , x - 1 , y )
(i , x , y + 1 )
(i , x , y - 1 )
Söhne: (i + 1, 2 x , 2 y )
(i + 1, 2 x + 1, 2 y )
(i + 1, 2 x , 2 y + 1)
(i + 1, 2 x + 1, 2 y + 1)
Existenzbedingung:
i i 0 <= i <= e und 0 <= x < 2 und 0 <= y < 2