Parallele Algorithmen I Basistechniken

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Fast Fourier Transformation
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Johannes-Kepler-Gymnasium
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Zusammenfassung der Vorwoche
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken IX Christian Schindelhauer
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
FH-Hof Formale Sprachen - Maschinenmodelle Richard Göbel.
ARRAY oder FELD oder VEKTOR
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
Seminar parallele Programmierung SS 2003
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Materialien zum Informatikunterricht (Pohlig-Häberle)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung
Wir üben die Malsätzchen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Mehrkriterielle Optimierung mit Metaheuristiken
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Auslegung eines Vorschubantriebes
2.4 Rekursion Klassifikation und Beispiele
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Komplexität von Algorithmen
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Anwendungen (2) Kompaktifizierung einer Liste Laufzeit: O(log(N)) a b 0 1 2 3 4 5 6 7 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

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) +...+ 2n - i = g(n-n) + 2(n-n+1) +...+ 2n - n = 0 + 2 + 4 +...+ 2n – n weil g(0) = 0 = 2 + 4 +...+ 2n - n = 2*n*(n+1)/2 - n weil 1+...+n = n(n+1)/2 = n^2

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

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

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

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

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

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