Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Ähnliche Dokumente
p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1

> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik

Klausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015

R Parallel Random Access Machine (PRAM)

Parallelität und Kommunikation

Skript zur Vorlesung Parallele Algorithmen. Andreas Goerdt Technische Universität Chemnitz Fakultät Informatik Theoretische Informatik

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

Mächtigkeit von WHILE-Programmen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

2. Parallel Random Access Machine (PRAM)

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer

Kapitel 1 Parallele Modelle Wie rechnet man parallel?

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva,

4. Sortieren 4.1 Vorbemerkungen

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Informatik II, SS 2014

Randomisierte Algorithmen 2. Erste Beispiele

Universität Karlsruhe (TH)

Algorithmen und Datenstrukturen Laufzeitabschätzung

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck

6. Parallele Algorithmen

Lösungsvorschlag Serie 2 Rekursion

7. Parallele Algorithmen für FPGA-Implementierungen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Grundlagen: Algorithmen und Datenstrukturen

Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Abschnitt: Algorithmendesign und Laufzeitanalyse

LOOP-Programme: Syntaktische Komponenten

Grundlagen: Algorithmen und Datenstrukturen

2. Effizienz von Algorithmen

Einwegfunktionen. Problemseminar. Komplexitätstheorie und Kryptographie. Martin Huschenbett. 30. Oktober 2008

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand

Teil V. Programmierbare Logische Arrays (PLAs)

Algorithmen und Datenstrukturen Heapsort

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Programmtransformationen: Vom PRAM Algorithmus zum MPI Programm

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Algorithmen und Datenstrukturen Tutorium I

Wenn wir zudem a ii = 1 für 1 i n setzen, dann gilt für A k (boolesches Produkt, A 0 = I) 0 falls es im Graphen keinen Pfad von v i nach v j,

Kapitel 5: Dynamisches Programmieren Gliederung

Theoretische Informatik SS 03 Übung 3

Algorithmen und Datenstrukturen I Grundlagen

Suchen und Sortieren Sortieren. Heaps

Kapitel 1: Informationsverarbeitung durch Programme

15. Elementare Graphalgorithmen

Rechnerische Komplexität

Algorithmische Bioinformatik 1

7. Übung zu Algorithmen I 1. Juni 2016

1 Abstrakte Datentypen

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Übung Algorithmen und Datenstrukturen

Komplexität von Algorithmen:

Datenstrukturen & Algorithmen

2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

SOI Die Schweizer Informatikolympiade

Universität Karlsruhe (TH) Algorithmen für Rechnerbündel III

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

String - Matching. Kapitel Definition

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

3. Übungsblatt zu Algorithmen I im SoSe 2017

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Informatik I Komplexität von Algorithmen

Mathematische Rekursion

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

11. Übung Algorithmen I

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Effiziente Algorithmen 2

Algorithmen und ihre Programmierung -Teil 2-

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

2 Lösungen "Peptide de novo Sequencing"

Algorithmen & Datenstrukturen Midterm Test 2

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

LR Zerlegung. Michael Sagraloff

Algorithmische Bioinformatik 1

Ralf Kirsch Uwe Schmitt. Programmieren inc. Eine mathematikorientierte Einführung. Mit 24 Abbildungen und 13 Tabellen. Springer

Algorithmentheorie Randomisierung. Robert Elsässer

Programmiertechnik II

Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation

Übung Algorithmen und Datenstrukturen

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Primzahlen und Programmieren

Übung Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

Transkript:

Präfix-Summe Das Schweizer Offiziersmesser der Parallelen Algorithmen Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Parallele Rechenmodelle Beispiel: Summieren von Zahlen Verlauf des Rechenprozesses: A(7) A(8) A(6) A(5) A(4) A(3) A(1) A(2)

Parallele Rechenmodelle Alternativer Verlauf: A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)

Was ist besser? Prozessorzahl: Laufzeit: 1 n / 2 n - 1 log n

Summe in einem Array Input: Ein Array A der Grösse n = 2 k, abgelegt im gemeinsamen Speicher von n Prozessoren. Output: Die Summe der Einträge von A in der Speicherzelle S. Algorithmus für Prozessor i: begin B[i] := A[i]; for h = 1 to log n do if (i <= n/2 h ) then x := B[2i-1]; y := B[2i]; z := x + y; B[i] := z; end; end; if i = 1 then S := z end; end A B B B B S Laufzeit ~ 2 log n

Definition PRAM Programm P 1 P 2... Prozessoren... P p gemeinsamer Speicher Schritt ist 1. Lese-Phase: 1 Speicherwort 2. Rechen-Phase: konstant viele Operationen im lokalen Speicher 3. Schreib-Phase: 1 Speicherwort Beispiel: Prozessor i führt aus: a[i] := a[a[i]]

Effizienz von PRAM Algorithmen n p(n) t p (n) Problemgrösse Prozessorzahl Laufzeit w p (n) = t p (n) l p(n) Arbeit Arbeit sequentiell Arbeit parallel Effizienz Laufzeit sequentiell Laufzeit parallel Speedup

Effizienz von PRAM Algorithmen Ein Algorithmus ist optimal, falls t p (n) = polylog(n) und w p (n) = O(t 1 (n)) effizient, falls t p (n) = polylog(n) und w p (n) = O(t 1 (n)) polylog(n) t 1 (n) ist die Laufzeit des schnellsten sequentiellen Algorithmus.

Wie schnell kann eine parallele Rechnung sein? Input: Ein Array x[1..n] mit n Zahlen. Output: Variable min p(n) = n 2 Prozessoren P ij (i=1,...,n, j=1,...,n) Algorithmus: 1. forall i P i1 : h[i] := 1; 2. forall i,j P ij : if x[i] < x[j] then h[j] := 0 end; 3. forall i,j P ij : if (h[i] = 1) and (i < j) then h[j] := 0 end; 4. forall i P i1 : if h[i] = 0 then min := x[i] end; Beispiel: x 8 5 2 4 6 7 9 5 h

Wie schnell kann eine parallele Rechnung sein? Input: Ein Array x[1..n] mit n Zahlen. Output: Variable min p(n) = n 2 Prozessoren P ij (i=1,...,n, j=1,...,n) Algorithmus: 1. forall i P i1 : h[i] := 1; 2. forall i,j P ij : if x[i] < x[j] then h[j] := 0 end; 3. forall i,j P ij : if (h[i] = 1) and (i < j) then h[j] := 0 end; 4. forall i P i1 : if h[i] = 0 then min := x[i] fi; Analyse: p(n) = n 2 t p (n) ~ 1 w p (n) ~ n 2 CR CW Modell CRCW Effizienz ~ 1/n Speedup ~ n

PRAM Modelle EREW CREW CRCW: weak: nur gleichzeitig 0 schreiben common: nur gleichzeitig denselben Wert schreiben arbitrary winner priority: grösste Prozessor-Id gewinnt strong: grösster Wert gewinnt

Präfix-Summe Beispiel Input: Ein Array ganzer Zahlen x[1..n] Output:s i := x 1 + x 2 +... + x i (für jedes i=1,...,n) x 8 5 2 4 6 1 9 5 + + + + 13 6 7 14 13 19 26 40 + + + s 8 13 15 19 25 26 35 40

Präfix-Summe Beispiel 13 6 7 14 + + 19 21 19 40 + 13 19 26 40

Präfix-Summe Beispiel 19 21 + 40 40 19 40

Präfix-Summe Beispiel 19 21 + 40 40 19 40

Präfix-Summe Algorithmus Input: Ein Array ganzer Zahlen x[1..n] Output:s i := x 1 + x 2 +... + x i (für jedes i=1,...,n) p(n) = n Prozessoren P i (i=1,...,n) Algorithmus: 0. if n = 1 then s[1]:= x[1]; halt end; 1. forall i: if i gerade then y[i/2] := x[i-1] + x[i] fi; (für Hilfsarray y[1..n/2]) 2. forall i = 1,...,n/2: berechne rekursiv z i := y 1 + y 2 +... + y i (für Hilfsarray z[1..n/2]) 3. forall i if i gerade then s[i] := z[i/2] else s[i] := z[(i-1)/2] + x[i] end;

Präfix-Summe Analyse EREW Schritt 0: konstante Zeit Schritt 1: konstante Zeit bei n/2 Proz. Schritt 2: Rekursion auf n/2 Werte Schritt 3: konstante Zeit bei n/2 Proz. p(n) = n/2 t p (n) ~ 4 log n w p (n) ~ 2n log n effizient, aber nicht optimal

Brents Lemma Idee: Simulation vieler Prozessoren durch wenige Parallele Rechnung: Laufzeit t, w Operationen (davon w i Operationen beim i-ten Schritt) Simuliere diese parallele Rechnung mit p Prozessoren Simuliere den i-ten parallelen Schritt in Laufzeit w i p w i < p +1 Gesamtlaufzeit: t wi w + 1 = + p p i= 1 t Voraussetzung: Prozessorallokation ist kein Problem

Präfix-Summe Analyse mit Brent Anzahl Operationen für n Zahlen: w = n + n/2 +... + 1 = 2n - 1 ~ n Anzahl Rekursionen für n Zahlen: t ~ log n da t p (n) = w / p + t wählt man: p(n) = n / log n damit wird: t p (n) ~ log n w p (n) = t p (n) l p(n) ~ n optimal

Präfix-Summe Analyse mit Brent Problemgrösse n Prozessorzahl p(n) = n / log n Laufzeit: log n log n/2 log n/4... 1 1 1 Gesamtlaufzeit ~ log n

Anwendung 1 Komprimieren eines dünn besetzten Arrays Input: dünnbesetztes Array 5 0 2 0 0 0 3... Output: komprimiertes Array 5 2 3... Algorithmus: 1. forall i: if input[i] = 0 then x[i] := 0 else x[i] := 1 end; 2. Präfix-Summe ergibt für Array x das Resultat-Array s 3. forall i if input[i] 0 then output[s[i]] := input[i] end;

Anwendung 2 Komprimieren zu einer verketteten Liste Input: dünnbesetztes Array 5 0 2 0 0 0 3... Output: Zeiger auf letztes Feld mit Inhalt ungleich 0 5 0 2 0 0 0 3... Algorithmus: 1. forall i: if input[i] = 0 then x[i] := 0 else x[i] := i end; 2. Präfix-Summe Die Operation x[i] x[i+1] ist definiert als: if (x[i] > 0) and (x[i+1] = 0) then x[i] else x[i+1] end; 3. Im Resultat-Array stehen die Indexwerte Allgemein: muss assoziativ sein

Anwendung 3 Simulation eines endlichen Automaten Präfix-Summe = Zustand des Automaten nach String Präfix 1 b a a 2 b 4 a a b 3 Input: a b b a a b b a b 1. Ersetze Eingabezeichen durch Übergangsfunktion. a: 1à2, 2à3, 3à4, 4à1 b: 1à3, 2à1, 3à2, 4à4 2. Berechne Präfix-Summe mit als Zusammensetzung von Funktionen. ergibt für jeden Präfix die Gesamtübergangsfunktion. 3. Setze an jeder Stelle den Anfangszustand ein. ergibt erreichten Zustand für jeden Präfix.

Anwendung 4 Addier-Schaltung Input: zwei n-bit-integer a,b Output: n+1-bit-integer a+b a = 0 1 0 1 0 1 1 1 b = 0 0 0 1 0 0 1 1 0 0 1 0 1 1 1 = Übertrag 0 1 1 0 1 0 1 0 = Summe Berechnung des Übertrages als endlichen Automaten realisieren: 0,1 2 0 1 0 1,2 Zustand = Übertrag Übergangsfkt. = a i +b i

Zusammenfassung Präfix Summe ist vielseitig einsetzbar. Laufzeit t p (n) ~ log n Arbeit w p (n) ~ n optimal