Vorlesung Programmierung Paralleler Prozesse Prof. Dr. Klaus Hering Sommersemester 2007 HTWK Leipzig, FB IMN
Sortierproblem Gegeben: Menge M mit einer Ordnungsrelation (etwa Menge der reellen Zahlen) Folge a = (a 1,..., a n ) über M Gesucht: Folge a = (a 1,..., a n ) mit a i a j geordnete Folge a verkörpert für 1 i j n, welche die aufsteigend Beispiel für einen vergleichsbasierten sequentiellen Algorithmus: Objekte: Elemente von M, Folgen über M, ganze Zahlen spezielle Regel zur Objektverarbeitung: compare-exchange (ad1, ad2) Wirkung: Die Werte unter ad1 und ad2 werden vertauscht, wenn der erste größer als der zweite ist (andernfalls wird die Wertzuordnung nicht geändert) 0250 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Bubble Sort Notation des Algorithmus (Vorschrift zur Regelanwendung): procedure BUBBLE_SORT (n) for i := n - 1 downto 1 do for j := 1 to i do compare-exchange ( a j, a j+1 ); end BUBBLE_SORT [KUMAR] Versuch der Überführung in einen parallelen Algorithmus 0260 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Gedanken zur Parallelisierung (I) Grundgedanke: parallele Ausführung von compare-exchange Operationen Schwierigkeit: Resultate von compare-exchange Operationen gehen in jeweils nachfolgende Operationen ein; betrachtet man die zu behandelnde Folge als in einem Array gespeichert, wird ein Element a j durch eine compare-exchange Operation ggf. überschrieben und dieses Resultat von der nachfolgenden Operation verwendet Lösung des Konflikts: Einführung von Phasen, in denen compare-exchange Operationen keine Überlappung hinsichtlich der betroffenen Folgenelemente haben 0270 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Odd - Even Transposition (Sequent.) procedure ODD-EVEN (n) for i := 1 to n do if i is odd then for j := 0 to n/2-1 do compare-exchange ( a 2j+1, a 2j+2 ); else for j := 1 to n/2-1 do compare-exchange ( a 2j, a 2j+1 ); end ODD-EVEN [KUMAR] 0280 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Gedanken zur Parallelisierung (II) Annahme: Feld von PEs mit jeweils zugehörigem ME Nachbarn sind in der Lage, bidirektional miteinander zu kommunizieren Ausgangsverteilung der zu sortierenden Folge: jede PE verfügt über genau ein Folgenelement parallele Realisierung einer compare-exchange Operation zwischen zwei benachbarten PEs P i und P j : a i a j a i, a j a j, a i min{a i, a j } max{a i, a j } P i P j P i P j P i P j Kommunikation lokale Resultatbildung PE-bezogene Kommunikationspartner und Resultatbildung phasenabhängig weiterhin notwendig: Synchronisation der Phasen! 0290 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Odd - Even Transposition (Parallel) unsortiert n Phasen sortiert 3 2 3 8 5 6 4 1 2 3 3 8 5 6 1 4 2 3 3 5 8 1 6 4 2 3 3 5 1 8 4 6 2 3 3 1 5 4 8 6 2 3 1 3 4 5 6 8 2 1 3 3 4 5 6 8 1 2 3 3 4 5 6 8 1 2 3 3 4 5 6 8 Phase 1 (odd) Phase 2 (even) Phase 3 (odd) Phase 4 (even) Phase 5 (odd) Phase 6 (even) Phase 7 (odd) Phase 8 (even) 0300 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Gedanken zur Parallelisierung (III) Übergang zu der Annahme, dass jedes PE nicht ein Folgenelement, sondern n/p Folgenelemente verwaltet (p... Anzahl der eingesetzten PEs) Modifikation der parallelen Variante von Odd - Even Transposition: Phasen wie in der vorangehenden Variante, zu Beginn der ersten Phase sortiert jedes PE die ihm zugeordnete Teilfolge sequentiell Ausführung von compare-split Operationen anstelle von compareexchange Operationen Compare - Split Operation in Bezug auf zwei benachbarte PEs P i und P i+1 : beide PEs schicken sich gegenseitig die von ihnen jeweils aktuell verwaltete Teilfolge jedes PE merged die vorhandene mit der erhaltenen Teilfolge zu einer geordneten Folge P i behält die erste Hälfte dieser Folge, P i+1 die zweite Hälfte 0310 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Compare - Split Operation [KUMAR] 0320 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Komparatoren Konstruktion spezieller Netzwerke zur Realisierung von Sortieralgorithmen Grundbausteine: Komparatoren + - 0330 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007 [KUMAR]
Sortiernetzwerke 0340 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007 [KUMAR]
Bitonic Merge 0350 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007 [QUINN]
Quicksort (Sequentiell) Divide-and-Conquer Strategie rekursive Bildung kürzerer zu sortierender Folgen mit Start ausgehend von der ursprünglich zu sortierenden Folge 0360 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007 [KUMAR]
Quicksort (Parallel) 0370 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
1.3 Parallelität auf Prozessorebene
Bitparallelität erste elektronische Digitalrechner arbeiteten mit bitseriellem Hauptspeicher Kathodenstrahlröhrensystem nach WILLIAMS erlaubte erstmalig parallelen Zugriff auf alle Bits eines Worts IBM 701 (1953) war der erste kommerzielle Rechner, bei dem Bitparallelarithmetik realisiert war Mitte der 80iger Jahre wuchs Wortbreite von Mikroprozessoren auf 32 Bits, Mitte der 90iger Jahre Erhöhung auf 64 Bits; Entwicklung im wesentlichen durch zwei Forderungen getragen: Anforderungen an die Genauigkeit von Floating Point Zahlen Ansprechmöglichkeit eines hinreichend großen Adressraums 0380 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007 [RAUBER, QUINN]
I/O - Prozessoren Input Output I/O - Prozessor Memory Control Unit Entlastung der CPU, speziell für I/O-Operationen konzipierter Befehlssatz Weitere speicherbezogene Parallelitätsaspekte: CPU Memory Interleaved memory Daten- und Befehls-Caches 0390 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Instruction Pipelining Typische Phasen der Befehlsverarbeitung: Laden des nächsten auszuführenden Befehls (Fetch, F) Dekodieren dieses Befehls (Decode, D) Bestimmen der Operandenadressen und Befehlsausführung (Execute, E) Rückschreiben des Resultats (Write back, W) Befehl 4 Befehl 3 Befehl 2 Befehl 1 F D E W F D E W F D E W F D E W Problem: Datenabhängigkeiten behindern gegebenenfalls vollständige Ausnutzung der Pipeline-Stufen Zeit [RAUBER] 0400 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Pipelined Functional Units Beispiel: Verarbeitung von Floating Point Zahlen Fraktion verschieben Fraktionen addieren Normalisieren Register 0410 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Multiplizität von Funktionseinheiten Prozessoren mit mehreren unabhängigen Funktionseinheiten wie ALUs (Arithmetic Logical Unit), FPUs (Floating Point Unit), Speicherzugriffseinheiten (Load/Store Unit) oder Sprungeinheiten (Branch Unit) Dabei werden im wesentlichen superskalare Prozessoren und Very Long Instruction Word (VLIW) Prozessoren unterschieden: Befehlssequenzen für superskalare Prozessoren werden per Hardware auf die zur Verfügung stehenden Funktionseinheiten verteilt, wenn die Datenabhängigkeiten zwischen den Instruktionen das erlauben. Dabei wird ein dynamisches Scheduling verwendet, was eine zusätzliche Erhöhung der Hardwarekomplexität nach sich zieht. Für VLIW Prozessoren werden durch spezielle Compiler Befehlsworte erzeugt, die für jede Funktionseinheit angeben, welche Instruktion zum entsprechenden Zeitpunkt ausgeführt wird (statisches Scheduling). [RAUBER] 0420 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007
Parallelverarbeitung Startpunkt der Parallelverarbeitung als Disziplin in den 70iger Jahren, wesentliche Einflußfaktoren: Entwicklung der VLSI - Technologie Entwicklung von Programmiertechniken (Semaphore, Monitore,...) Konstruktion erster echter paralleler Computer, z.b. C.mmp (Computer with multiple miniprocessors) Erfolgreiche Weiterentwicklung der Vector Computer (Cray-Serie) 0430 Programmierung Paralleler Prozesse, Prof. Klaus Hering, SS 2007