• Keine Ergebnisse gefunden

Ausblick: Optimaler Algorithmus

4.2 Verschmelzen 31

4.2.3 Ausblick: Optimaler Algorithmus

4-22 Wie bekommen wir einen optimalen parallelen Algorithmus? 4-22

Wir sind nicht optimal, da die ArbeitO(n log n)stattO(n)ist.

Wir müssen also Arbeit einsparen.

Der Trick ist,weniger zu parallelisieren.

In der Vorlesung zumAccelerated Cascadingwerden wir sehen, wie dies geht.

Mit diesem verbesserten Algorithmus werden wir dann in ZeitO(log2n)und Arbeit O(n log n)sortieren können.

Zusammenfassung dieses Kapitels

4-23 1. Divide-and-Conquer kann in parallelen Algorithmen ebenfalls genutzt werden. 4-23

2. Man kann die konvexe Hülle vonn Punkten in ZeitO(log2n)und ArbeitO(n log n) berechnet werden.

3. Man kann zwei sortierte Listen der Längen in Zeit O log n

und Arbeit O(n log n) verschmelzen.

Übungen zu diesem Kapitel

Übung 4.1 (Schnelles Finden einer Tangente, schwer) Beweisen Sie das Lemma von Projektion 4-10.

Tipps:Führen Sie gleichzeitig auf beiden Teilhüllen eine binäre Suche durch. In jedem Schritt sollten Sie in beiden Teilhüllen jeweils die Hälfte der Punkte eliminieren. Um zu ermitteln, welche Punkte eleminierte werden können, berechnen Sie Tangenten an die aktuellen Punkte und die Teilhüllen.

Berechnen Sie, wo diese Tangenten sich treffen und wo dieser Schnittpunkt relativ zu den aktuellen Punkten auf der Tangente liegt (links oder rechts).

Übung 4.2 (Anordnung von Punkten bestimmen, leicht)

Geben Sie ein möglichst einfaches und numerisch stabiles Verfahren an um festzustellen, ob ein Punkt plinks oder rechts von der durch die Punkteq1 undq2gehenden Gerade liegt.

34 4 Paralleles Teilen und Herrschen Übungen zu diesem Kapitel

Übung 4.3 (Programmodifikation, mittel)

Bei den Algorithmen zum Verschmelzen zweier Listen und beim Partitionierungsalgorithmus hatten wir vorausgesetzt, dass alle Elemente paarweise verschieden sind. Wir betrachten nun Listen, die auch gleiche Elemente enthalten dürfen.

Zeigen Sie, wie man mit Hilfe eines Vorverarbeitungsschrittes und eines Nachbearbeitungsschrittes die Algorithmen auch für solche Listen verwenden kann. Geben Sie für die Vorverarbeitung und die Nachbearbeitung je ein Verfahren an, das konstante Zeit und lineare Arbeit benötigt.

Tipps: Addieren Sie kleine Störwerte auf die Elemente.

Übung 4.4 (Pointer-Jumping, schwer)

Im Speicher einer PRAM sei ein Wald mitnKnoten gespeichert. Dieser ist durch eine ListeP(1), . . . ,P(n)repräsentiert, wobeiP(i)den Elternknoten des Knotensiangibt.

1. Geben Sie einen Algorithmus an, der die Anzahl der Bäume im Wald bestimmt.

2. Geben Sie einen Algorithmus an, der die Anzahl der Blätter im Wald bestimmt.

3. Geben Sie einen Algorithmus an, der die Größe des größten Baumes im Wald bestimmt. Die Größe eines Baumes ist dabei die Anzahl seiner Knoten. Der Algorithmus soll eine Laufzeit vonO(log2n)und eine Arbeit vonO(n log n)haben. Sie dürfen davon ausgehen, dass mann Zahlen in ZeitO(log2n)und ArbeitO(n log n)sorieren kann.

5 Pipelining Algorithmen 35

5-1 5-1

Kapitel 5

Pipelining Algorithmen

Arbeiter am Fließband

5-2 5-2

Lernziele dieses Kapitels

1. Konzept des Pipelining verstehen und anwenden können

2. Konzept des 2-3-Baumes verstehen

3. Beispiel eines Pipelining Algorithmus kennen (Einfügen in 2-3-Bäume)

Inhalte dieses Kapitels

5.1 Pipelining 36

5.2 2-3-Bäume 36

5.2.1 Was sind 2-3-Bäume? . . . 36 5.2.2 Suchen in 2-3-Bäumen . . . 37 5.2.3 Einfügen in 2-3-Bäumen . . . 38 5.2.4 Paralleles Einfügen . . . 39

5.3 Pipelining und 2-3-Bäume 40

5.3.1 Verbesserung durch Pipelining . . . 40

Worum es heute geht

Worum es heute geht

Spätestens seit Charly Chaplins FilmModern Timesweiß man, dass Menschen für Fließ- bandarbeit nicht geschaffen sind. Ganz anders Computer: Ohne Murren können sie auch die stupideste Aufgabe hingebungsvoll viele Billiarden Male wiederholen, bevor es ihnen zu langweilig wird und sie zur Abwechselung – nur so zur allgemeinen Erheiterung – mal einen Non-Maskable-Interrupt auslösen.

An einem Fließband arbeiten mehrere Arbeiter parallel. Genauso werden beim Pipelining im Rechner unterschiedliche Prozessoren gleichzeitig an unterschiedlichen »Arbeitspake- ten« arbeiten. Ist ein Arbeiter mit einem Arbeitsschritt fertig (zum Beispiel dem Anschrau- ben einer Mutter), so wird das Ergebnis zum nächsten Arbeiter befördert. Analog wird beim einem Pipelining-Algorithmus jeder Rechner ein kleines Arbeitspaket abschließen und dann das Ergebnis an den nächsten Prozessor weiterreichen.

Wir werden heute das Pipelining an einem eher theoretischen Beispiel kennenlernen und auch sonst werden die Pipeliningbeispiel so komplex sein, dass man sie eher nicht in realem Code umsetzen würde. Jedoch ist Pipelining auch vom praktischen Standpunkt aus enorm wichtig: Ohne dieProzessorpipelineoder auchInstruktionspipeline, welche in allen modernen Prozessoren vorhanden ist und welche letztendlich genau eine parallele Pipeline ist, wie wir sie in der heutigen Vorlesung betrachten werden, wären moderne Prozessoren locker um den Faktor 10 langsamer.

36 5 Pipelining Algorithmen 5.2 2-3-Bäume

5.1 Pipelining

5-4 Die Idee beim Pipelining. 5-4

PipeliningistFließbandarbeit.

Verschiedene Personen (Prozessoren) arbeitenparalleland mehreren Dingen.

Nach jedem Arbeitsschritt wird das Ergebnis an den nächsten Prozessor weiterge- reicht.

Unknown author, public domain

5-5 (Zu) einfache Formalisierung des Pipelining. 5-5

Problemstellung

Eingabe Ein Folge von Wertew1,w2, . . . ,wk. Ausgabe Die Folge f(w1), f(w2), . . . , f(wk).

Dabei ist f =fmfm1◦ · · · ◦f1. Lösung mittels Pipelining

1. Im ersten Zeitschritt berechnet P1den Wert f1(w1).

2. Im zweiten Zeitschritt berechnet P1den Wert f1(w2), P2den Wert f2(f1(w1)).

3. Im dritten Zeitschritt berechnet P1den Wert f1(w3), P2den Wert f2(f1(w2)), P3den Wert f3(f2(f1(w1))).

4. Und so weiter.

5.2 2-3-Bäume

5.2.1 Was sind 2-3-Bäume?

5-6 Was sind 2-3-Bäume? 5-6

2-3-Bäume sind eineSuchbaumstruktur.

Sie unterstützen die OperationenEinfügen,SuchenundLöschen.

Sie unterscheiden sich von gewöhnlichen (binären) Suchbäumen dadurch, dass

1. alle Blätter dieselbe Höheh haben.

2. jeder innere Knoten genau 2 oder 3 Nachfolger hat.

Wir nehmen auch noch an, dass nur die Blätter Daten halten (nicht unbedingt nötig).

Zur Diskussion

Welche Vor- und Nachteile haben 2-3-Bäume gegebenüber normalen Suchbäumen?

5 Pipelining Algorithmen

5.2 2-3-Bäume 37

5-7 Beispiel eines 2-3-Baums. 5-7

Paul

Anton, Lisa

Aaron Katja Ken, Otto

Till

Peter Torsten

5-8 Die Datenstruktur im Detail. 5-8

JedesBlatthält einen Schlüsselsi.

Für innere Knoten mit zwei Kindernv0 undv00gilt:

Alle Schlüssel im Teilbaum vonv0 sind kleiner als die Schlüssel im Teilbaum vonv00.

L[v]speichert einen Wert, der größer als alle Schlüssel im Teilbaum von v0 ist und kleiner als alle Schlüssel im Teilbaum vonv00.

Wir sagen,L[v] trennt die Kindbäume.

Für innere Knoten mit drei Kindernv0,v00und v000 gilt:

Alle Schlüssel im Teilbaum vonv0 sind kleiner als die Schlüssel im Teilbaum vonv00, die wiederum kleiner als die Wert vonv000 sind.

L[v]trennt die Werte in den Teilbäumen vonv0 undv00. M[v]trennt die Werte in den Teilbäumen vonv00und v000.