Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Seminar: Parallele und Verteilte Programmierung Datenparallele Algorithmische Skelette in Muesli Dominik Pfeiffer Münster, 31. Mai 2007.

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar: Parallele und Verteilte Programmierung Datenparallele Algorithmische Skelette in Muesli Dominik Pfeiffer Münster, 31. Mai 2007."—  Präsentation transkript:

1 Seminar: Parallele und Verteilte Programmierung Datenparallele Algorithmische Skelette in Muesli Dominik Pfeiffer Münster, 31. Mai 2007

2 2 Gliederung 1.Motivation 2.Grundlegende Begriffe 3.Die Skelettbibliothek Muesli 4.Beispielprogramm 5.Zusammenfassung und Bewertung

3 3 Motivation Probleme in der parallelen Programmierung: Synchronisation von Prozessen Deadlocks Starvation Mögliche Lösung des Problems: Von der Parallelität der Ausführung abstrahieren Auf einer höheren Ebene Funktionen zur parallelen Verarbeitung von Aufgaben und Daten bereitstellen Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

4 4 Gliederung 1.Motivation 2.Grundlegende Begriffe 1.Funktionen höherer Ordnung 2.Partielle Applikationen 3.Algorithmische Skelette 3.Die Skelettbibliothek Muesli 4.Beispielprogramm 5.Zusammenfassung und Bewertung

5 5 Funktionen höherer Ordnung Funktionen mit Funktionen als Parameter oder Rückgabewerte Gleichstellung von Funktionen und Werten Beispiel: map (funktion, [liste]) map wendet eine Funktion sukzessiv auf jedes Element einer Liste an Realisierung bspw. in C++ durch Funktionszeiger Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

6 6 Partielle Applikationen (1/2) Anwendung von weniger Argumenten auf eine Funktion als erwartet werden Umwandeln dieser Funktion in neue Funktion mit nur noch den fehlenden Argumenten Anwendung beliebiger Werte auf restliche Argumente führt zum selben Ergebnis wie Auflösen der Ursprungsfunktion Lässt sich beliebig frei und tief verschachteln Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

7 7 Partielle Applikationen (2/2) Realisierung durch die Hilfsfunktion curry() Beispiel: Ausgangsfunktion: map (funktion, [liste]) Hilfsfunktion: mult(x, y) Anwendung von curry() auf mult(x,y) mit dem Parameter 2 liefert mult2(y) Partielle Applikation: map(curry(mult)(2), [liste]) Ergebnis: Alle Elemente der Liste werden mit 2 multipliziert Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

8 8 Algorithmische Skelette (1/2) Stellen ein Gerüst für bestimmte Operationen und Kommunikationsmuster bereit Verbergen die parallele Ausführung Vermeiden unnötige Spezialisierung Können in der sequentiellen Programmierung genutzt werden Kümmern sich um Low-Level-Probleme Deadlocks Starvation Synchronisation Implementierung unter Verwendung von: Polymorphismus Funktionen höherer Ordnung Partielle Applikationen Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

9 9 Algorithmische Skelette (2/2) Taskparallele Skelette Teilen Probleme in sequentiell und parallel abzuarbeitende Aufgaben Datenparallele Skelette Führen Operationen auf verteilten Datenstrukturen aus Laufen intern parallel ab Rechenskelette Bearbeiten die Inhalte der verteilten Datenstruktur Kommunikationsskelette Versenden Daten Synchronisieren Prozesse Ändern die Verteilung der Partitionen auf einzelne Prozesse Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

10 10 Gliederung 1.Motivation 2.Grundlegende Begriffe 3.Die Skelettbibliothek Muesli 1.Übersicht 2.Verteilte Datenstrukturen 3.Map 4.ZipWith 5.Fold 4.Beispielprogramm 5.Zusammenfassung und Bewertung

11 11 Übersicht Muesli ist eine Skelettbibliothek Algorithmische Skelette Verteilte Datenstrukturen Keine eigene Programmiersprache Implementierung C++ Interprozesskommunikation mit MPI Funktionen höherer Ordnung Partielle Applikationen Polymorphismus (Templates) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

12 12 Verteilte Datenstrukturen (1/2) Verteilte Datenstrukturen Array und Matrix Aufteilung in Partitionen Verteilung der Partitionen auf mehrere Prozesse Konstruktoren Größe der Matrix Größe der Partition Initialwert oder –funktion Hilfsfunktionen get set show … Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

13 13 Verteilte Datenstrukturen (2/2) Kommunikation ist nicht erforderlich Alle Prozesse führen den gleichen Code aus Partition wird anhand der ProzessID bestimmt Alle Prozesse haben die gleiche Datenbasis Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

14 14 Map (1/2) Rechenskelett Wendet eine Funktion sukzessiv auf jedes Element einer Datenstruktur an Die Anwendung kann parallel von jedem Prozess auf seiner Partition erfolgen Kommunikation ist nicht erforderlich Skelettdefinition in Muesli: DistributedMatrix map (R (*f)(E)) Varianten DistributedMatrix mapIndex(R (*f)(int,int,E)) void mapInPlace(E (*f)(E)) void mapIndexInPlace(E (*f)(int,int,E)) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

15 15 Map (2/2) Beispiel Multiplikation aller Elemente der Matrix mit 2 Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

16 16 ZipWith (1/2) Rechenskelett Kombiniert zwei gleiche Datenstrukturen Gleiche Größe der Matrix Gleiche Partitionierung Elementweise Kombination Kommunikation ist nicht erforderlich Skelettdefinition in Muesli: DistributedMatrix zipWith ( const DistributedMatrix & b, R (*f)(E,E2)) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

17 17 ZipWith (2/2) Beispiel: Kombination durch element- weise Multiplikation Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung & & & & & = = = = = Prozess 4 Prozess 3 Prozess 1 Prozess 2

18 18 Fold (1/3) Rechenskelett Vereint alle Elemente einer Datenstruktur Nacheinander Vereinigung jedes Elements mit dem bisherigen Zwischenergebnis Die Art der Vereinigung wird durch Parameter bestimmt: Assoziative Funktion f f erwartet 2 Parameter vom Typ der Elemente der Datenstruktur Ergebnis liegt danach bei jedem Prozess vor Ergebnis = f(Elem 1, f(Elem 2, … f(Elem n-1, Elem n )…)) Kommunikation erforderlich Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

19 19 Fold (2/3) Beispiel Schritt 1: Vereinigung der Elemente jeder lokalen Partition Schritt 2: Austausch der Zwischenergebnisse zwischen den Prozessen Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

20 20 Fold (3/3) Beispiel Schritt 3: Vereinigung der Zwischenergebnisse durch jeden Prozess Skelettdefinition in Muesli: E fold (E (*f)(E,E)) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

21 21 Gliederung 1.Motivation 2.Grundlegende Begriffe 3.Die Skelettbibliothek Muesli 4.Beispielprogramm 1.Hintergrund 2.Programmablauf 3.Implementierung 5.Zusammenfassung und Bewertung

22 22 Hintergrund Beispielprogramm unter Verwendung der hier vorgestellten Skelette Anwendungskontext: Verschmelzen von zwei Übergangsmatrizen aus der Wahrscheinlichkeitstheorie Praktische Anwendung in der Physik bei der Beschreibung physikalischer Zustandsveränderungen Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

23 23 Programmablauf 1.Erstellen zweier 4x4-Übergangsmatrizen Matrix 1: Die ersten beiden Zeilen mit 0,5 und der Rest mit 0 belegt Matrix 2: Einheitsmatrix 2.Kombinieren der Matrizen 3.Berechnung der Summe aller Werte der Ergebnismatrix Die Werte müssen in der Summe 4 ergeben Stellt ansatzweise die Korrektheit der Vereinigung sicher Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

24 24 Implementierung (1/5) Initialisieren der Skelettbibliothek InitSkeletons(argc, argv); Initialisieren der ersten Übergangsmatrix DistributedMatrix m1(4,4,1,4); m1.mapIndexInPlace(&firsttwo); Hilfsfunktion firsttwo double firsttwo(const int a, const int b, const double d) { return (a == 0 || a == 1) ? 0.5 : 0; } Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung m1=

25 25 Implementierung (2/5) Initialisieren der zweiten Übergangsmatrix DistributedMatrix m2(4,4,&identmx,1,4); Hilfsfunktion identmx double identmx(const int a, const int b) { return (a == b) ? 1 : 0; } Kombinieren der Matrizen m1.zipWithInPlace(m2,&combine); Hilfsfunktion combine double combine(const double a, const double b) { return ((a + b) / 2); } Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung m2= m1=

26 26 Implementierung (3/5) Berechnung der Summe aller Werte der Ergebnismatrix double sum = m1.fold(&add); Hilfsfunktion add double add(const double a, const double b) { return a + b; } Skelettbibliothek beenden TerminateSkeletons(); Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung m1=

27 27 Implementierung (4/5) Vollständiger Quellcode (Teil 1) #include "Skeleton.h" double firsttwo(const int a, const int b, const double d) { return (a == 0 || a == 1) ? 0.5 : 0;} double identmx(const int a, const int b) { return (a == b) ? 1 : 0;} double combine(const double a, const double b) { return ((a + b) / 2);} double add(const double a, const double b) { return a + b;} (…) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

28 28 Implementierung (5/5) int main(int argc, char **argv) { InitSkeletons(argc, argv); // Initialisieren der Skelette DistributedMatrix M1(4, 4, 1, 4); // Initialisieren der Matrizen M1.mapIndexInPlace(&firsttwo); DistributedMatrix M2(4, 4, &identmx, 1, 4); M1.zipWithInPlace(M2, &combine); // Kombinieren der Matrizen double sum = M1.fold(&add); // Summe der Werte bilden TerminateSkeletons(); // Skelettbibliothek beenden } Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung Vollständiger Quellcode (Teil 2)

29 29 Gliederung 1.Motivation 2.Grundlegende Begriffe 3.Die Skelettbibliothek Muesli 4.Beispielprogramm 5.Zusammenfassung und Bewertung

30 30 Bewertung (Positiv) Abstraktion von Low-Level-Programmierung Deadlocks, Starvation, Synchronisation Jedes Skelett als Funktion höherer Ordnung und als partielle Applikation verfügbar Einheitliche Namensgebung bei Endungen -Index -InPlace Programmierer kann weiterhin sequentiell arbeiten Nur noch Bereitstellen einer adäquaten problemspezifischen Funktion durch den Entwickler Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

31 31 Bewertung (Negativ) Anzahl beteiligter Prozesse muss Potenz zur Basis 2 sein Keine freie Partitionierung Größe der Partition muss Teiler der Größe der Datenstruktur sein Anzahl der Partitionen muss gleich Anzahl der Prozesse sein Alle Partitionen müssen gleich groß sein Keine automatische Partitionierung Mögliche Schwierigkeiten beim Kompilieren GNU Compiler G MPI 1.2.x Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

32 32 Zusammenfassung Algorithmische Skelette Gerüst für die parallele Verarbeitung Hohes Abstraktionsniveau Effizient implementiert Polymorphismus, Funktionen höherer Ordnung und partielle Applikationen Nutzung wie bei sequentieller Programmierung möglich Muesli Keine eigene Programmiersprache, sondern Bibliothek Verteilte Datenstrukturen Array und Matrix Konstruktoren und Hilfsfunktionen Rechen- und Kommunikationsskelette Bereitstellen einer adäquaten problemspezifischen Funktion durch den Entwickler Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

33 Seminar: Parallele und Verteilte Programmierung Vielen Dank für eure Aufmerksamkeit!

34 34 PermutePartition Kommunikationsskelett Ändert die Verteilung der Partitionen auf die Prozesse Erwartet bijektive Funktionen als Parameter

35 35 Global vs. Lokal Wahl zwischen der Betrachtungsweise des Problems Global Index der verteilten Datenstruktur Geeignet für die Lösung eines Problems im Gesamtzusammenhang Lokal Index der lokalen Partition Geeignet für Optimierungen Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung


Herunterladen ppt "Seminar: Parallele und Verteilte Programmierung Datenparallele Algorithmische Skelette in Muesli Dominik Pfeiffer Münster, 31. Mai 2007."

Ähnliche Präsentationen


Google-Anzeigen