6. Parallele Algorithmen

Ähnliche Dokumente
Kapitel 1 Parallele Modelle Wie rechnet man parallel?

7. Parallele Algorithmen für FPGA-Implementierungen

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

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

Systeme 1: Architektur

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1)

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

JAVA - Suchen - Sortieren

Parallele Algorithmen

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

Mathematik I. Vorlesung 14. Rang von Matrizen

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

mit "Skalarprodukt" aus i-tem "Zeilenvektor" und j-tem "Spaltenvektor"

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

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

1 Matrizenrechnung zweiter Teil

Algorithmen & Komplexität

16. All Pairs Shortest Path (ASPS)

MLAN1 1 MATRIZEN 1 0 = A T =

In allen Fällen spielt die 'Determinante' einer Matrix eine zentrale Rolle.

Algorithmische Methoden zur Netzwerkanalyse

Lineare Algebra 1. Roger Burkhardt

4. Sortieren 4.1 Vorbemerkungen

Parallelität und Kommunikation

Grundlagen: Algorithmen und Datenstrukturen

37 Gauß-Algorithmus und lineare Gleichungssysteme

Übungspaket 23 Mehrdimensionale Arrays

[Nächste Frage: wie wissen wir, ob Spaltenvektoren eine Basis bilden? Siehe L6.1] , enthält eine Basis v. V, nämlich und somit das ganze V.

Blockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 :

Parallele Algorithmen in der Bildverarbeitung

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

9.2 Invertierbare Matrizen

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

5 Lineare Gleichungssysteme und Determinanten

12. Algorithmus der Woche Paralleles Sortieren Parallel geht schnell

Matrix: Eine rechteckige Anordnung reeller Zahlen a ij (i = 1,..., n i ; j = 1,..., m) in Zeilen und Spalten. Die a ij heiÿen Elemente von A.

8.2 Invertierbare Matrizen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Eine lineare Abbildung ist bijektiv, d.h. ihre Matrix ist invertierbar, falls und nur falls

4 Matrizenrechnung. Beide Operationen geschehen also koeffizientenweise. Daher übertragen sich die Rechenregeln von K(m n, k).

Vektoren und Matrizen

3 Matrizenrechnung. 3. November

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

WiMa-Praktikum 1. Woche 8

5.1 Determinanten der Ordnung 2 und 3. a 11 a 12 a 21 a 22. det(a) =a 11 a 22 a 12 a 21. a 11 a 21

Serie 5. Lineare Algebra D-MATH, HS Prof. Richard Pink. 1. [Aufgabe] Invertieren Sie folgende Matrizen über Q:

1 Lineare Algebra. 1.1 Matrizen und Vektoren. Slide 3. Matrizen. Eine Matrix ist ein rechteckiges Zahlenschema

Die Determinante ist nur für beliebige quadratische Matrizen (n = m) definiert: a 11 a 12 a a 1n a 21 a 22. det. a nn.

Rechneraufbau und Rechnerstrukturen

Algorithmen II Vorlesung am

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

1 Random Access Maschine

Rechneraufbau und Rechnerstrukturen

Suchen und Sortieren

bekannt: Eliminationsverfahren von Gauß Verfahren führt zu einer Zerlegung der Koeffizientenmatrix: A = LR A = LR

1 Sortieren in zweidimensionalen Zellularautomaten

Sortiernetzwerke. Patrick Bäuerle. Sommersemester Hochschule Aalen Betreuender Professor: Prof. Dr. Thierauf

Musterlösungen Blatt Mathematischer Vorkurs. Sommersemester Dr. O. Zobay. Matrizen

Algebraische und arithmetische Algorithmen

5. Bäume und Minimalgerüste

Grundbegriffe der Informatik

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Programmierpraktikum

5 Sortieren in eindimensionalen Zellularautomaten

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Lineare Algebra für D-ITET, D-MATL, RW. Beispiellösung für Serie 10. Aufgabe ETH Zürich D-MATH. Herbstsemester Dr. V. Gradinaru D.

Matrizen, Determinanten, lineare Gleichungssysteme

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

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Kapitel 3

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining

Mathematik für Informatiker 1 Wintersemester 2013/14 Übungsblatt 12

Theoretische Informatik SS 03 Übung 3

LINEARE ALGEBRA II. FÜR PHYSIKER

a 11 a 12 a 1(m 1) a 1m a n1 a n2 a n(m 1) a nm Matrizen Betrachten wir das nachfolgende Rechteckschema:

Komplexität von Algorithmen:

Charles Babbage. Vortrag für das Oberseminar Geschichte der Informatik

Mikroprozessortechnik Grundlagen 1

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Mathematik für Naturwissenschaftler II SS 2010

Übung zur Vorlesung Berechenbarkeit und Komplexität

Vorkurs: Mathematik für Informatiker

LOOP-Programme: Syntaktische Komponenten

Kap 7. Funktionen und Arrays

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

6. Transitive Hülle. 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive Hülle Ring Z(+, ) Semiring N(+, )

5. Übungsblatt zu Algorithmen I im SoSe 2016

DATENSTRUKTUREN UND ALGORITHMEN

Transkript:

6. Parallele Algorithmen 6.1 Vorbemerkungen Bisher: Instruktionen von Programmen werden durch einen einzigen Prozessor sequentiell ausgeführt. Eine Beschleunigung von Algorithmen ist dabei nur möglich, wenn die Arbeitsgeschwindigkeit der einzelnen Komponenten (Prozessor, Speicher, Datenübertragung) erhöht wird. Eine weitere Geschwindigkeitssteigerung kann generell erreicht werden, wenn man die vonneumann Architektur verlässt und Algorithmen parallel auf mehreren Prozessoren implementiert oder in mehrere unabhängige Teilaufgaben zerlegt und diese auf mehrere Rechner verteilt. nicht vonneumann Architekturen Parallelrechner Verteilte Systeme MIMD SIMD Cluster LANs WANs etc. Array (Feld)Rechner Systolische Systeme Parallelrechner: viele Prozessoren, jeder ist mit "privatem" Speicher ausgestattet. Alternativ oder zusätzlich kann ein globaler (common) Speicher vorliegen. Arbeitsweise: Verbindungsnetz: zwischen Prozessoren und Speichermodulen, oder zwischen Prozessoren untereinander Ein/Ausgabeeinrichtungen, etc. eine oder mehrere Aufgaben [Programme] werden auf die Prozessoren verteilt. I.a. arbeiten mehrere Prozessoren an einem Programm ("parallele Programme") SIMDTyp: alle Prozessoren führen zur selben Zeit dieselbe Operation aus MIMDTyp: die zur selben Zeit ausgeführten Operationen können unterschiedlich sein, die Prozessoren arbeiten unabhängiger Prozessoren kommunizieren direkt miteinander über das Verbindungsnetz oder über den gemeinsamen Speicher Als Modell für eine von Neumann Maschine dient z. B. die Random Access Maschine (RAM). Analog zur RAM kann man auch ein idealisiertes Modell von Parallelrechnern konzipieren: ein Beispiel dafür ist die Parallel RandomAccess Maschine (PRAM). Eine PRAM besteht aus p > 1 Prozessoren P 1,..., P p, die auf einen gemeinsamen Speicher (common oder shared memory) zugreifen können. Zusätzlich kann jeder Prozessor über einen privaten (lokalen) Arbeitsspeicher verfügen. Die Prozessoren sind synchronisiert, d.h. sie führen die Rechenschritte gleichzeitig und taktweise aus. Ein Rechenschritt besteht aus drei Phasen: ein Prozessor liest Daten aus dem gemeinsamen Speicher, führt dann die Operation aus, und schreibt schließlich das Ergebnis in den gemeinsamen Speicher. Die Kommunikation zwischen den Prozessoren erfolgt über den gemeinsamen Speicher. Beim Datenzugriff euf eine Speicherzelle unterscheidet man den EREW (exclusive read exclusive write), CREW (concurrent read exclusive write), und CRCW (concurrent read concurrent write). Gleichzeitiges Lesen und Schreiben dsb. Speicherzelle führt zu Konflikten, außer die schreibenden Prozessoren wollen denselben Datenwert in die Speicherzelle eintragen. Andere Parallelrechnermodelle benutzen statt eines gemeinsamen Speichers ein Verbindungsnetz, über das diese miteinander kommunizieren können. Hier tritt die Frage auf, welche Struktur das Verbindungsnetz haben soll. Dessen Struktur bestimmt nämlich weitgehend, für welche Aufgaben der Rechner besonders geeignet ist. Untersuchungen gehen auch in die Richtung, welche Verbindungstrukturen insbesondere für universell einsetzbare Parallelrechner in Frage kommen. Beispiele sind Hypercubes und shuffleexchangegraphen. 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 61

6.2 Einige einfache Beispiele für parallele Algorithmen 6.2.1 Minimumsbestimmung Gegeben eine Menge von Zahlen z 1,..., z n ; bestimme den kleinsten Wert. Sei n eine Potenz von 2. Auf einer EREW PRAM mit n/2 Prozessoren könnte das so implementiert werden: Im ersten Durchgang bestimmt man z 1 ' = min{z 1, z 2 }, z 2 ' = min{z 3, z 4 }, z 3 ' = min{z 5, z 6 },..., parallel auf n/2 Prozessoren, im zweiten Durchgang z 1 " = min{z 1 ', z 2 '}, z 2 " = min{z 3 ', z 4 '},..., parallel auf n/4 Prozessoren, usw. Das Minimum wird nach log 2 n Schritten erhalten. Wenn n keine Potenz von 2 ist, muss das Verfahren geringfügig modifiziert werden. Der Zeitaufwand ist O(log 2 n). 6.2.2 Summe von n Zahlen Dies kann auf einer EREW PRAM mit n/2 Prozessoren in log 2 n = O(log 2 n) Schritten berechnet werden (ein Schritt besteht dabei jeweils aus zwei SpeicherZugriffen zum Holen der Operanden, der Addition, und schließlich dem Zurückspeichern des Resultats in den gemeinsamen Speicher). "Fanin" Technik: z 1 z 2 z 3 z 4 z 5 z 6 z 7 z 8 6.2.3 Skalarprodukt zweier Vektoren Seien Vektoren v = (v 1,..., v n ) und w = (w 1,..., w n ) gegeben. Das Skalarprodukt s = i=1 Σ vi w i kann auf einer EREW PRAM mit n Prozessoren in 1 log 2 n = O(log 2 n) Schritten berechnet werden. Im ersten Schritt werden die Multiplikationen ausgeführt, einschließlich der dazu erforderlichen Zugriffe auf den gemeinsamen Speicher. Danach werden die n Produktwerte addiert. 6.2.4 Produkt von Matrizen Seien Matrizen A, B der Dimension n n im gemeinsamen Speicher einer EREW PRAM abgelegt. Das Produkt C = A B kann in O(log 2 n) Schritten berechnet werden, indem man zur Bestimmung jedes einzelnen Skalarprodukts n c ij = Σ k=1 aik b kj n Prozessoren verwendet, insgesamt also n 3 Prozessoren. Bei Verwendung von weniger Prozessoren erhält man entsprechend größere Laufzeiten; z.b. bei n Prozessoren kann man die Skalarprodukte nur hintereinander ausführen; der Zeitaufwand steigt dann auf O(n 2 log 2 n). 6.2.5 Potenzen einer Matrix Sei A eine n n Matrix und k IN. Zunächst sei nur A k zu berechnen: Wenn k eine Potenz von 2 ist, müssen hintereinander A 2, A 4,... A k, also k 1 Produkte von Matrizen berechnet werden. Dafür sind insgesamt (log 2 k)( log 2 n 1) Schritte bei n 3 Prozessoren erforderlich. Wenn k keine Potenz von 2 ist, ergibt sich ein in der Größenordnung ähnlicher Zeitaufwand. Als nächstes sollen alle Potenzen A 2, A 3,..., A k bestimmt werden. Probleme dieser Art treten etwa bei Wegeproblemen in Graphen mit n Ecken auf. Der Zeitaufwand ergibt sich zu O(log 2 n) bei n 4 /2 Prozessoren. A A 2 A 4 A 8 n A 3 A 7 A 6 A 5 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 62

6.3 Paralleles Mischen und Sortieren Oddeven transposition sort (vgl. Kap. 3) lässt sich auf einer PRAM mit n/2 Prozessoren bei einem Zeitaufwand von O(n) realisieren. Ein schnelleres Verfahren zur Sortierung von einer gegebenen Menge von Zahlen, das zudem mit weniger Prozessoren auskommt, wird nun besprochen. 6.3.1 Theoretische Grundlage Bitonische Zahlenfolgen Eine Zahlenfolge heißt, wenn sie durch Aneinanderhängen einer absteigend en Zahlenfolge und einer aufsteigend en Folge, oder durch eine zyklische Vertauschung daraus entsteht. Beispiele: 1 3 5 7 8 6 4 2 0 7 8 6 4 2 0 1 3 5 Bitonische Zahlenfolgen haben eine Eigenschaft, die man zum Sortieren ausnutzen kann: Lemma. Sei a = (,..., a n 1 ). Sei b i = min{a i, a in/2 } und c i = max{a i, a in/2 } für 0 i < n/2. Dann gilt: (i) Die Folgen b = (,..., b n 1 ) und c = (c 0,..., c n 1 ) sind. (ii) b i c j für alle i und j. Beweis. Zunächst sei angenommen, dass... a n/2 1 und a n/2... a n 1. In diesem Fall ist es klar, dass die Behauptung gilt. Den Fall, dass die auf und absteigende Teilfolge in a ungleiche Länge haben, oder zyklisch vertauscht sind, überlegt man sich ebenfalls leicht.? Folge a Folge c Folge a Folge c Folge b Folge b 0 n/2 n 0 n/2 1 0 n/2 n 0 n/2 1 Wenn man nun eine e Folge von Zahlen, hat, dann kann man durch rekursive Anwendung des Lemmas eine Sortierung erhalten. Im folgenden wird gezeigt, wie ein Sortiernetz, das auf dem Prinzip der en Folgen operiert, realisiert werden kann. 6.3.2 Bitonischer Sortierer Basis des Verfahrens sind Vertauschungselemente der Form: a b min{a,b} a max{a,b} a a max{a,b} b min{a,b} b b Funktion Funktion Durchschalten Mit diesen werden Sortiernetzwerke aufgebaut. Ein ner bekommt als Eingabe eine e Folge mit n Elementen, und gibt diese in er Reihenfolge (ansteigend mit wachsendem Index) aus. Man kann leicht nachvollziehen, dass der 4e () diese Aufgabe erfüllt. Der 4Sortierer () wird dann erhalten, indem man zuerst die eingegebenen Zahlen reiht, was durch die beiden Vergleichselemente erreicht wird, und anschließend den en () anwendet. Der 4Sortierer () beliebige 4 Zahlen aufsteigend. 4er 4Sortierer 4er 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 63

Analog der 4e ( ) und der 4Sortierer ( ) : 4er 4Sortierer 4er un Ein 8er () und 8Sortierer () sehen dann entsprechend so aus: 8er 8Sortierer a 4 a 5 a 6 a 7 c 0 c 1 c 2 c 3 c 4 c 5 c 6 c 7 b 4 b 5 b 6 b 7 a 4 a 5 a 6 a 7 4Sortierer 4Sortierer 8er b 4 b 5 b 6 b 7 un Sei im folgenden n = 2 k. Ein ner enthält eine Spalte von Vergleichselementen, gefolgt von zwei parallelen n/2en n. Insgesamt hat ein ner daher k Spalten von Vergleichselementen. Das rekursive Konstruktionsprinzip kann nun leicht erkannt werden: Ein nsortierer besteht aus zwei n/2sortierern, gefolgt von einem nen. Die Anzahl der Vergleichsspalten s(k) beim Sortierer ergibt sich somit aus der Rekursion 1 für k = 1 s(k) = s(k 1) k für k > 1, also s(k) = k(k1)/2 = O(log 2 n) 6.3.3 ShuffleexchangeNetz... n/2 Sortierer n/2... Sortierer nsortierer ner Bitonische Sortierer können systematisch mittels sog. shuffleexchangenetze aufgebaut werden. Ein shuffleexchangenetz der Größe n = 2 k ist ein Netz, deren Eingänge so mit Ausgängen verbunden, dass deren Binärwerte zyklische Vertauschungen sind: Eingang i ist mit Ausgang j verbunden, falls der Binärwert von j durch ein Ringshift links aus dem Binärwert von i erhalten wird. Für n = 8 sieht das so aus:... 000 001 010 100 011 101 110 111 Shuffleexchange Netz 000 000 001 100 010 001 011 101 100 010 101 110 110 011 111 111 Das Shuffle exchangenetz definiert also eine Permutation auf der Menge der Eingänge; diese ist zyklisch mit der Zyklenlänge log(n) = k. 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 64

Es liegt nahe, ein Sortiernetz aus einer einzigen Spalte von Vergleichselementen aufzubauen, und die Eingänge mit Hilfe des Shuffle exchange Netzes zu permutieren. Die Vergleichselemente müssen dabei über Steuerleitungen so gesteuert werden, dass sie jeweils die richtige Funktion (,, Durchschalten) ausführen. Insgesamt braucht man daher für einen n = 2 k Sortierer n/2 Vergleichselemente. Satz. Mit Hilfe eines aus n/2 Vergleichselementen nach dem Shuffle exchange Prinzip aufgebauten Sortiernetzes können n Zahlen in der Zeit O(log 3 n) werden. Beweis. Insgesamt werden bei O(log 2 n) Durchläufen des Sortiernetzes oder Vergleiche durchgeführt. Dazwischen müssen die Eingänge vor dem nächsten Durchlauf geeignet permutiert werden; dazu sind jeweils bis zu k 1 = O(log n) Durchläufe erforderlich, bei denen die Vergleichselemente lediglich durchschalten. 8Sortiernetz 6.4 Systolische Algorithmen Prinzipien: wenige unterschiedliche Typen von Prozessoren, die i.a. in einem regelmäßigen Netz von nur lokalen Verbindungen angeordnet sind. Die Verarbeitung erfolgt pipelineartig nach dem SIMDPrinzip. Als Beispiel wird die MatrixVektor Multiplikation y = A x betrachtet. Bei gegebener Matrix A = (a ij ) (Dimension n) und Vektor x = (x 1,..., x n ) T kann das Produkt (y 1,..., y n ) T = A (x 1,..., x n ) T wie folgt berechnet werden: y i (1) = 0 y i (k1) = y i (k) a ik x k y i = y i (n1) Die Matrix A sei eine Bandmatrix mit Bandweite w = q p 1 mit festen Werten p und q n. Z. B. für p = 2 und q = 3: 1 2 1 2 3 1 2 3 4 a 42 a 43 a 44 a 45 Bandweite w a 53...... 0 0 Berechnung von y = A x : die Elemente von A, x und y (anfangs 0) werden durch ein systolisches Array hindurchgeschoben. Das systolische Array besteht aus w Prozessoren, die jeweils einen Schritt zur Berechnung von A x ausführen. Die Werte von A werden von oben nach unten, die Werte von x von links nach rechts, und die Werte von y von rechts nach links geschoben: die Elemente von A bei jedem Takt, die Werte von x bei jedem ungeraden Takt, und die Werte von y bei jedem geraden Takt.. x 1 x 2 x 3 x 4. = y 1 y 2 y 3 y 4. 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 65

4 a 43 3 a 42 3 2 1 2 2 1 x 1 x 2 y 1 y 2 = 0 1 Takt 1 x 1 y 1 = 0 2 x 1, 1 ; y 1 y 2 3 x 2, 2 ; y 1 x 1, 1 ; y 2 4 x 2, 2 ; y 2 x 1, 1 ; y 3......... Benachbarte Prozessoren sind abwechselnd aktiv. Wenn (z.b.) w = p q 1 gerade: nach w Takten wird das erste Element von y, und nach jeweils zwei weiteren Takten das nächste Element von y ausgegeben. Damit benötigt das Netz insgesamt 2n w Takte zur Bestimmung von y = A x. Ende Kapitel 6 2001 K. Ecker Angewandte und praktische Informatik, Kap. 6: Parallele Algorithmen 66