Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parallele Algorithmen I Basistechniken

Ähnliche Präsentationen


Präsentation zum Thema: "Parallele Algorithmen I Basistechniken"—  Präsentation transkript:

1 Parallele Algorithmen I Basistechniken
Prof. Dr. Walter F. Tichy Dr. Victor Pankratius David Meder Ali Jannesari Todo: Animationen überprüfen Replizierte Objekte

2 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 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 2

3 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. Beliebig viele Prozessoren, Speicher Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 3

4 PRAM Sprachkonstrukte (1)
Imperative Programmiersprache mit Erweiterungen, um Parallelität zu spezifizieren. Asynchrones FORALL: FORALL i : P IN PARALLEL Anweisung1(i) … Anweisungn(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. Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 4

5 PRAM Sprachkonstrukte (2)
synchrone Form des FORALL: FORALL i : P IN SYNC Anweisung1(i) … Anweisungn(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. Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 5

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

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

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

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

10 FORALL (1) 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. 1 2 3 4 5 6 7 8 10 12 14 A B C + = Prozessor Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 10

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

12 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. 1 2 3 4 5 6 7 A Prozessor Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 12

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

14 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? 1 2 3 4 5 6 7 A Prozessor Sum 28 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 14

15 Reduktion (2) Baumartiges Reduktionsverfahren: Fasse jeweils zwei (im Abstand 2k, 0 ≤ k < log2(N)) benachbarte Elemente zusammen: 1 2 3 4 5 6 7 Sum(0,1) Sum(2,3) Sum(4,5) Sum(6,7) Sum(0,3) Sum(4,7) Sum(0,7) Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 15

16 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; parallele Laufzeit: O(log2(N)), Modell: CREW Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 16

17 Reduktion (4) N = 4 Schritt 1 Spanne = 1 < 4, 2 * Spanne = 2 N = 4
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; Reduktion (4) N = 4 Schritt 1 Spanne = 1 < 4, 2 * Spanne = 2 N = 4 Schritt 2 Spanne = 2 < 4, 2 * Spanne = 4 1 2 3 Valt i mod 4 Spanne + i 4 5 Vneu 1 2 3 Valt i mod 2 Spanne + i 4 Vneu Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 17

18 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; Reduktion (5) Frage: Funktioniert das Verfahren auch, wenn N keine Potenz von 2 ist? Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 18

19 Reduktion (6) N = 6 Schritt 1 Spanne = 1 < 6, 2 * Spanne = 2 N = 6
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; Reduktion (6) N = 6 Schritt 1 Spanne = 1 < 6, 2 * Spanne = 2 N = 6 Schritt 2 Spanne = 2 < 6, 2 * Spanne = 4 1 2 3 Valt i mod 4 Spanne + i Vneu 4 5 6 7 1 2 3 Valt i mod 2 Spanne + i Vneu 4 5 6 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 19

20 Reduktion (7) Funktioniert auch, wenn N keine Potenz von 2 ist.
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; Reduktion (7) N = 6 Schritt 3 Spanne = 4 < 6, 2 * Spanne = 8 Funktioniert auch, wenn N keine Potenz von 2 ist. Übriges Element (im Beispiel Element 4) wird dann in einem separaten Schritt verrechnet. 1 2 3 Valt i mod 8 Spanne + i Vneu 4 5 6 7 8 9 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 20

21 Präfix & Postfix (1) Berechnung aller Partialsummen (MPI_Scan): 3 4 2
3 4 2 5 6 7 1 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 21

22 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 A 2 3 4 5 6 7 Präfix 8 Postfix Prozessor Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 22

23 Präfix & Postfix (3) Berechnung der Präfixsumme:
A 1 2 4 8 16 32 48 96 B 1 2 4 8 16 32 48 96 log2(8) = 3 Schritte zur Berechnung der Präfixsummen. +B[i-1] 1 3 6 12 24 48 80 144 +B[i-2] 1 3 7 15 30 60 104 192 +B[i-4] 1 3 7 15 31 63 111 207 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 23

24 Broadcast (1) Verteilen von Elementen (nützlich z.B. für MPI_Bcast): ?
Prozessor 1 2 3 4 5 6 7 a ? ? ? ? ? ? ? ? a a a a a a a a Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 24

25 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 Prozessor 1 2 3 4 5 6 7 a ? ? ? ? ? ? ? a a ? ? ? ? ? ? a a a a ? ? ? ? a a a a a a a a Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 25

26 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; parallele Laufzeit: O(log2(N)), Modell: EREW. Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 26

27 Broadcast (4) N = 4 Schritt 1 N = 4 Schritt 2 1 2 3 1 2 3 a a a a a a
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; Broadcast (4) N = 4 Schritt 1 N = 4 Schritt 2 1 2 3 1 2 3 Valt a Valt a a Spanne[i] 1 1 1 1 Spanne[i] 2 2 2 2 i>=Spanne[i] 1 1 1 i>=Spanne[i] 1 1 Vneu Vneu a a a a a a Spanne[i]neu 2 2 2 2 Spanne[i]neu 4 4 4 4 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 27

28 Anwendungen (1) Abzählen von Elementen mit einer bestimmten Eigenschaft: FORALL i:[0 .. N-1] IN PARALLEL T[i] := test_condition(i); END Präfix(T,+); Ergebnis in T Präfix T 1 2 3 4 5 6 7 Prozessor Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 28

29 Anwendungen (2) Kompaktifizierung einer Liste Laufzeit: O(log(N)) a b
Kompaktifizierung einer Liste Laufzeit: O(log(N)) a b c d a b c d 1 2 3 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' 4 T‘: Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 29

30 Anwendungen (3) Rekurrenzen – 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 - 3 ... = 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 Anwendungen (3) Rekurrenzen
Lösen von Rekurrenzen (1. Ordnung): Xi = Xi-1 ○ ai, mit ○ binärer Operator. Beispiel: Präfixsumme als Rekurrenz: Sumi = Sumi-1 + ai mit Sum0 = a0 Lösen von Rekurrenzen höherer Ordnung auch möglich: Xi = ai-1 ○ Xi-1 ○ … ○ ai-m ○ Xi-m ○ bi Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 31

32 Anwendungen (4) Parallele Polynomauswertung: f(x) = a0 + a1x + a2x2+ a3x3+ a4x4+ a5x5+ a6x6+ a7x7 Laufzeit: O(3*log(N)) = O(log(N)) X 1 2 3 4 5 6 7 Prozessor x Broadcast X Präfix(X,*) x2 x3 x4 x5 x6 x7 A T = A * X L_Reduce(T,+) f(x) Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 32

33 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? Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 33

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

35 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? q i=p Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 35 35

36 Aufgabe (4) Schreiben Sie ein paralleles Programm, welches die ersten N Fibonacci-Zahlen berechnet. fi = fi-1 + fi-2, f0 = f1 = 1 Prof. W. F. Tichy, Dr. V. Pankratius, D. Meder, A. Jannesari 36 36


Herunterladen ppt "Parallele Algorithmen I Basistechniken"

Ähnliche Präsentationen


Google-Anzeigen