Parallele Algorithmen
Parallele Algorithmen
Parallele Algorithmen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
16 KAPITEL 2. MASCHINENMODELLE<br />
CREW PRAM zur Matrizenmultiplikation<br />
Verwendet werden n 3 Prozessoren P 000 P 001 :::P n;1n;1n;1 .<br />
Gegeben: zwei n n-Matrizen a b.<br />
Gesucht: ihr Matrizenprodukt c mit<br />
c ij =<br />
Xn;1<br />
k=0<br />
a ik b kj<br />
VAR a,b : ARRAY [0..n-1] [0..n-1] OF REAL<br />
FOR ALL 0 i, j, k n - 1 DO IN PARALLEL<br />
P ijk : tmp [i, j, k] := a[i, k] * b [k, j]<br />
END<br />
(* nun wird mit n 3 /2 Prozessoren *)<br />
(* das Array tmp [i, j, *] aufaddiert *)<br />
d := n<br />
REPEAT<br />
d := d DIV 2<br />
FOR ALL 0 k d - 1 DO IN PARALLEL<br />
P ijk : tmp[i, j, k] := tmp [i, j, 2 * k] + tmp [i, j, 2 * k + 1]<br />
END<br />
UNTIL d = 1<br />
Das Ergebnis c ij bendet sich in tmp [i, j, 0].<br />
Sequentialzeit: O(n 3 )<br />
Parallelzeit: O(log n)<br />
Speedup: O(n 3 = log n)<br />
Ezienz: O(n 3 =n 3 log n) =O(1= log n)