Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lehrstuhl für Programmiersysteme Fakultät für Informatik Parallele Algorithmen I Basistechniken Prof. Dr. Walter F. Tichy Dr. Victor Pankratius David Meder.

Ähnliche Präsentationen


Präsentation zum Thema: "Lehrstuhl für Programmiersysteme Fakultät für Informatik Parallele Algorithmen I Basistechniken Prof. Dr. Walter F. Tichy Dr. Victor Pankratius David Meder."—  Präsentation transkript:

1 Lehrstuhl für Programmiersysteme Fakultät für Informatik Parallele Algorithmen I Basistechniken Prof. Dr. Walter F. Tichy Dr. Victor Pankratius David Meder Ali Jannesari

2 Lehrstuhl für Programmiersysteme Fakultät für Informatik 2 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Parallel Random Access Machine (PRAM) Abstraktes Maschinenmodell, in dem sich parallele Algorithmen sehr gut spezifizieren lassen. Entspricht einer synchronen MIMD-Maschine mit gemeinsamem Adressraum. Speicherzugriffsvarianten EREW: Exclusive Read, Exclusive Write ERCW: Exclusive Read, Concurrent Write CREW: Concurrent Read, Exclusive Write CRCW: Concurrent Read, Concurrent Write

3 Lehrstuhl für Programmiersysteme Fakultät für Informatik 3 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Probleme des PRAM-Modells Es gibt keine echte, synchrone MIMD-Maschine mit gemeinsamem Adressraum. Alle Speicherzugriffsvarianten außer EREW sind unrealistisch. Die implizite Annahme, dass Kommunikations- operationen eine Zeiteinheit dauern, ist ebenfalls unrealistisch. ABER: Ist man sich der Unzulänglichkeiten bewusst, dann ist die PRAM ein sehr elegantes Modell zur Spezifikation paralleler Algorithmen. Diese können einfach für Cluster konvertiert werden.

4 Lehrstuhl für Programmiersysteme Fakultät für Informatik 4 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari PRAM Sprachkonstrukte (1) Imperative Programmiersprache mit Erweiterungen, um Parallelität zu spezifizieren. Asynchrones FORALL: FORALL i : P IN PARALLEL Anweisung 1 (i) … Anweisung n (i) END P ist eine Menge; für jedes Element in P wird ein Prozessor eingesetzt, wobei jeder Prozessor ein unterschiedliches Element i der Menge P bekommt. Jeder Prozessor führt die Anweisungsfolge 1.. n asynchron aus. Die FORALL-Anweisung endet, wenn jeder Prozessor die Anweisungs- reihenfolge abgearbeitet hat. Zwischendurch erfolgt keine Synchronisation.

5 Lehrstuhl für Programmiersysteme Fakultät für Informatik 5 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari PRAM Sprachkonstrukte (2) synchrone Form des FORALL: FORALL i : P IN SYNC Anweisung 1 (i) … Anweisung n (i) END Wie vorher, nur dass jetzt alle Prozessoren die Anweisungsfolge synchron („im Gleichschritt“) ausführen. Die synchrone Ausführung gleicher Anweisungen vermeidet viele Laufzeitprobleme, da unterschiedliche Ausführungs- geschwindigkeiten der Prozessoren nicht beachtet werden müssen.

6 Lehrstuhl für Programmiersysteme Fakultät für Informatik 6 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Synchrone Zuweisung Synchrone Abarbeitung der Zuweisung: L := R 1) Alle n Prozessoren werten L synchron aus und erhalten eine Adresse. 2) Alle n Prozessoren werten R synchron aus und erhalten einen Wert. 3) Alle n Prozessoren speichern ihren Wert an ihrer Adresse (EW oder CW). 4) (1) & (2) können im Prinzip auch gleichzeitig ausgeführt werden. Seiteneffekte sind möglich, aber die Reihenfolge der Auswertungen ist undefiniert.

7 Lehrstuhl für Programmiersysteme Fakultät für Informatik 7 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Synchrones IF-THEN-ELSE (1) Synchrone Abarbeitung der bedingten Anweisung: IF B THEN S1 ELSE S2 1) Alle n Prozessoren werten B synchron aus. 2) Die Menge der Prozessoren partitioniert sich in die Mengen M T (für B=T) und M F (für B=F) in Abhängigkeit des Ergebnisses von B. 3) Die Menge M T führt S1 synchron aus. 4) Die Menge M F führt S2 synchron aus. 5) Die Untermengen M T und M F können (müssen aber nicht) parallel abgearbeitet werden. Keine Aussage über die „relativen Geschwindigkeiten“ zueinander. 6) Ausführung endet, wenn die Mengen M T und M F beide fertig sind.

8 Lehrstuhl für Programmiersysteme Fakultät für Informatik Synchrones IF-THEN-ELSE (2) 8 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari IF (Answer == 42) THEN print(„Woohoo!“); ELSE print(„Doh!“); ENDIF Prozessoren M T mit Answer == 42 Alle Prozessoren Prozessoren M F mit Answer != 42 Answer = 21 * (processorId % 3); Alle Prozessoren Answer = 21 * (processorId % 3); IF (Answer == 42) THEN print(„Woohoo!“); ELSE print(„Doh!“); ENDIF Alle Prozessoren werten die Bedingung synchron aus. Ende, sobald beide Prozessorgruppen M T und M F fertig sind.

9 Lehrstuhl für Programmiersysteme Fakultät für Informatik Synchrones IF-THEN-ELSE (3) 9 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari IF (Answer == 42) THEN print(„Woohoo!“); ELSE print(„Doh!“); ENDIF Prozessoren M T mit Answer == 42 Alle Prozessoren Prozessoren M F mit Answer != 42 Answer = 21 * (processorId % 3); Alle Prozessoren Answer = 21 * (processorId % 3); IF (Answer == 42) THEN print(„Woohoo!“); ELSE print(„Doh!“); ENDIF Alle Prozessoren werten die Bedingung synchron aus. Ende, sobald beide Prozessorgruppen M T und M F fertig sind.

10 Lehrstuhl für Programmiersysteme Fakultät für Informatik 10 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Addition eines n-elementigen Vektors FORALL i : [0.. n-1] IN SYNC C[i] := A[i] + B[i]; END Bsp.: für n = 8 FORALL i : [0.. n-1] IN PARALLEL wäre ebenfalls möglich, da die Anweisungen voneinander unabhängig sind. FORALL (1) A B C + = Prozessor

11 Lehrstuhl für Programmiersysteme Fakultät für Informatik 1) Alle n Prozessoren Werten C[i] synchron aus und erhalten eine Adresse. 2) Alle n Prozessoren Werten A[i] + B[i] synchron aus und erhalten einen Wert. 3) Alle n Prozessoren speichern ihren Wert an der in (1) ermittelten Adresse. 4) Haben alle n Prozessoren die FORALL-Schleife abgearbeitet, wird gemeinsam mit der Bearbeitung der danach folgenden Codezeilen fortgefahren. FORALL (2) 11 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari FORALL i : [0.. n-1] IN SYNC ; END C[i] := A[i] + B[i]

12 Lehrstuhl für Programmiersysteme Fakultät für Informatik 12 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari FORALL (3) Rotieren eines n-elementigen Vektors FORALL i : [0.. n-1] IN SYNC A[i] := A[(i+1)mod n]; END Bsp.: für n = 8 FORALL i : [0.. n-1] IN PARALLEL wäre nicht möglich, da dann unter Umständen falsche Werte weitergegeben werden A Prozessor A

13 Lehrstuhl für Programmiersysteme Fakultät für Informatik FORALL (4) Beispiel für fehlerhafte Ausführung mit IN PARALLEL 13 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari A Prozessor A ) Prozessoren 0 bis 3, sowie 5 bis 7 führen Anweisung gleichzeitig aus. 2) Prozessor 4 liest Wert aus A[5] erst, nachdem dieser von Prozessor 5 geschrieben wurde (  asynchrone Ausführung!)

14 Lehrstuhl für Programmiersysteme Fakultät für Informatik 14 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Reduktion (1) Eine Reduktion, d.h. das Zusammenfassen mehrerer Datenelemente zu einem Ergebnis, gehört zu den Basistechniken der parallelen Algorithmen. (MPI_Reduce, MPI_Allreduce) Bsp: Die parallele Summenbildung Summenberechnung sequentiell: O(N) Frage: Wie geht's parallel schneller? A Prozessor Sum 28

15 Lehrstuhl für Programmiersysteme Fakultät für Informatik 15 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Reduktion (2) Baumartiges Reduktionsverfahren: Fasse jeweils zwei (im Abstand 2 k, 0 ≤ k < log 2 (N)) benachbarte Elemente zusammen: Sum(0,7) Sum(0,3) Sum(0,1) Sum(2,3) Sum(4,5) Sum(6,7) Sum(4,7)

16 Lehrstuhl für Programmiersysteme Fakultät für Informatik 16 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Reduktion (3) PRAM Programm einer parallelen Summe CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END parallele Laufzeit: O(log 2 (N)), Modell: CREW

17 Lehrstuhl für Programmiersysteme Fakultät für Informatik Reduktion (4) N = 4 Schritt 1 Spanne = 1 < 4, 2 * Spanne = 2 17 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END 0123 V alt i mod 2 Spanne + i V neu N = 4 Schritt 2 Spanne = 2 < 4, 2 * Spanne = V alt i mod 4 Spanne + i V neu

18 Lehrstuhl für Programmiersysteme Fakultät für Informatik Reduktion (5) 18 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END Frage: Funktioniert das Verfahren auch, wenn N keine Potenz von 2 ist?

19 Lehrstuhl für Programmiersysteme Fakultät für Informatik Reduktion (6) N = 6 Schritt 1 Spanne = 1 < 6, 2 * Spanne = 2 19 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END 0123 V alt i mod 2 Spanne + i V neu N = 6 Schritt 2 Spanne = 2 < 6, 2 * Spanne = V alt i mod 4 Spanne + i V neu

20 Lehrstuhl für Programmiersysteme Fakultät für Informatik Reduktion (7) N = 6 Schritt 3 Spanne = 4 < 6, 2 * Spanne = 8 20 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END CONST N = 4 V : ARRAY [0.. N-1] OF INTEGER Spanne : INTEGER Spanne := 1; WHILE (Spanne < N) DO FORALL i : [0.. N-1] IN SYNC IF (i MOD (2*Spanne)) = 0 AND Spanne+i < N V[i] := V[i] + V[i + Spanne]; END Spanne := Spanne * 2; END 0123 V alt i mod 8 Spanne + i V neu Funktioniert auch, wenn N keine Potenz von 2 ist. Übriges Element (im Beispiel Element 4) wird dann in einem separaten Schritt verrechnet.

21 Lehrstuhl für Programmiersysteme Fakultät für Informatik 21 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Präfix & Postfix (1) Berechnung aller Partialsummen (MPI_Scan): Sum(0,1) Sum(0,3) Sum(1,2) Sum(2,3) Sum(3,4) Sum(4,5) Sum(5,6) Sum(6,7) Sum(7,7) Sum(1,4) Sum(2,5) Sum(3,6) Sum(4,7) Sum(5,7) Sum(1,7) Sum(2,7) Sum(3,7) Sum(0,7)

22 Lehrstuhl für Programmiersysteme Fakultät für Informatik 22 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Präfix & Postfix (2) Präfixoperation(j) berücksichtigt alle Elemente i mit 0 ≤ i ≤ j. Postfixoperation(j) berücksichtigt alle Elemente i mit N-1 ≥ i ≥ j. Beispiel: Prä- und Postfixsummen. 1 1 A Präfix Postfix Prozessor

23 Lehrstuhl für Programmiersysteme Fakultät für Informatik Präfix & Postfix (3) Berechnung der Präfixsumme: 23 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari A B +B[i-1] +B[i-2] +B[i-4] log 2 (8) = 3 Schritte zur Berechnung der Präfixsummen.

24 Lehrstuhl für Programmiersysteme Fakultät für Informatik 24 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Broadcast (1) Verteilen von Elementen (nützlich z.B. für MPI_Bcast): a a ? ? Prozessor ? ? ? ? ? ? ? ? ? ? ? ? a a a a a a a a a a a a a a a a ?

25 Lehrstuhl für Programmiersysteme Fakultät für Informatik 25 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Broadcast (2) Verteilen von Elementen (nützlich z.B. für MPI_Bcast): Sei  Verknüpfungsoperator mit Eigenschaft a  x = a Speichere a in T[0] Wende dann Präfixoperation an a a ? ? ? ? ? ? ? ? ? ? ? ? ? ? Prozessor ? ? ? ? ? ? ? ? ? ? ? ? a a a a a a a a a a a a ? ? ? ? ? ? ? ? a a a a a a a a a a a a a a a a 

26 Lehrstuhl für Programmiersysteme Fakultät für Informatik 26 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Broadcast (3) PRAM Programm zur Datenverteilung CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : ARRAY [0.. N-1] INTEGER V[0] := a; FORALL i : [0.. N-1] IN SYNC Spanne[i] := 1; WHILE (Spanne[i] < N) DO IF i >= Spanne[i] V[i] := V[i - Spanne[i]]; END Spanne[i] := Spanne[i] * 2; END CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : ARRAY [0.. N-1] INTEGER V[0] := a; FORALL i : [0.. N-1] IN SYNC Spanne[i] := 1; WHILE (Spanne[i] < N) DO IF i >= Spanne[i] V[i] := V[i - Spanne[i]]; END Spanne[i] := Spanne[i] * 2; END parallele Laufzeit: O(log2(N)), Modell: EREW.

27 Lehrstuhl für Programmiersysteme Fakultät für Informatik Broadcast (4) N = 4 Schritt 1 27 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari a 0123 V alt Spanne[i]1111 aa V neu CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : ARRAY [0.. N-1] INTEGER V[0] := a; FORALL i : [0.. N-1] IN SYNC Spanne[i] := 1; WHILE (Spanne[i] < N) DO IF i >= Spanne[i] V[i] := V[i - Spanne[i]]; END Spanne[i] := Spanne[i] * 2; END CONST N =... V : ARRAY [0.. N-1] OF INTEGER Spanne : ARRAY [0.. N-1] INTEGER V[0] := a; FORALL i : [0.. N-1] IN SYNC Spanne[i] := 1; WHILE (Spanne[i] < N) DO IF i >= Spanne[i] V[i] := V[i - Spanne[i]]; END Spanne[i] := Spanne[i] * 2; END i>=Spanne[i]111 Spanne[i] neu 2222 aa 0123 V alt Spanne[i]2222 aaaa V neu i>=Spanne[i]11 Spanne[i] neu 4444 N = 4 Schritt 2

28 Lehrstuhl für Programmiersysteme Fakultät für Informatik 28 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Anwendungen (1) FORALL i:[0.. N-1] IN PARALLEL T[i] := test_condition(i); END Präfix(T,+); Ergebnis in T Präfix T Prozessor T Abzählen von Elementen mit einer bestimmten Eigenschaft:

29 Lehrstuhl für Programmiersysteme Fakultät für Informatik 29 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Anwendungen (2) Kompaktifizierung einer Liste Laufzeit: O(log(N)) a a b b c c d d a a b b c c d d a a b b c c a a b b c c d d d d L if isChar(L[i]) then T[i] := 1; else T[i] := 0; T: Präfix(T,+) if (T[i] == 1) then L'[T ' [i]-1] := L[i] L' T‘:

30 Lehrstuhl für Programmiersysteme Fakultät für Informatik Anwendungen (3) Rekurrenzen – Zur Erinnerung Zur Erinnerung Beispiel: Finde geschlossene Form für lineare Rekurrenz g(n) = g(n-1) + 2n -1 g(0) = 0 Lösung: f(n)=n² Möglicher Lösungsansatz: „Ausrollen“ g(n) = g(n-1) + 2n - 1 = [g(n-2) + 2(n-1) - 1] + 2n - 1 weil g(n-1) = g(n-2) + 2(n-1) -1 = g(n-2) + 2(n-1) + 2n - 2 = [g(n-3) + 2(n-2) -1] + 2(n-1) + 2n - 2 weil g(n-2) = g(n-3) + 2(n-2) -1 = g(n-3) + 2(n-2) + 2(n-1) + 2n = g(n-i) + 2(n-i+1) n - i... = g(n-n) + 2(n-n+1) n - n = n – n weil g(0) = 0 = n - n = 2*n*(n+1)/2 - n weil n = n(n+1)/2 = n^2

31 Lehrstuhl für Programmiersysteme Fakultät für Informatik 31 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Anwendungen (3) Rekurrenzen Lösen von Rekurrenzen (1. Ordnung): X i = X i-1 ○ a i, mit ○ binärer Operator. Beispiel: Präfixsumme als Rekurrenz: Sum i = Sum i-1 + a i mit Sum 0 = a 0 Lösen von Rekurrenzen höherer Ordnung auch möglich: X i = a i-1 ○ X i-1 ○ … ○ a i-m ○ X i-m ○ b i

32 Lehrstuhl für Programmiersysteme Fakultät für Informatik 32 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Parallele Polynomauswertung: f(x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + a 4 x 4 + a 5 x 5 + a 6 x 6 + a 7 x 7 Laufzeit: O(3*log(N)) = O(log(N)) Anwendungen (4) X Prozessor x x x x x x x x x x x x x x x x Broadcast X Präfix(X,*) 1 1 x x x2x2 x2x2 x3x3 x3x3 x4x4 x4x4 x5x5 x5x5 x6x6 x6x6 x7x7 x7x7 A T = A * X L_Reduce(T,+) f(x)

33 Lehrstuhl für Programmiersysteme Fakultät für Informatik 33 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Aufgabe (1) Gegeben sei ein N-elementiger Zahlenvektor v[0…n-1]. Schreiben Sie ein paralleles Programm, welches D = max{ v[i] − v[j] }, 0 ≤ i, j < n berechnet. Was ist die asymptotische Laufzeit?

34 Lehrstuhl für Programmiersysteme Fakultät für Informatik 34 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Aufgabe (2) Schreiben Sie ein paralleles Programm, welches zwei Zeichenreihen der Länge N lexikographisch vergleicht. Was ist die asymptotische Laufzeit?

35 Lehrstuhl für Programmiersysteme Fakultät für Informatik 35 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Aufgabe (3) Gegeben sei ein N-elementiger Zahlenvektor v[0… n-1]. Schreiben Sie ein paralleles Programm, welches den Wert des maximalen Untervektors bestimmt: U=max{ ∑ v[i] ; 0 ≤ p < q < n} Was ist die asymptotische Laufzeit? i=p q

36 Lehrstuhl für Programmiersysteme Fakultät für Informatik 36 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari Aufgabe (4) Schreiben Sie ein paralleles Programm, welches die ersten N Fibonacci-Zahlen berechnet. f i = f i-1 + f i-2, f 0 = f 1 = 1


Herunterladen ppt "Lehrstuhl für Programmiersysteme Fakultät für Informatik Parallele Algorithmen I Basistechniken Prof. Dr. Walter F. Tichy Dr. Victor Pankratius David Meder."

Ähnliche Präsentationen


Google-Anzeigen