Datenparallele Algorithmische Skelette in Muesli

Slides:



Advertisements
Ähnliche Präsentationen
Programme in C++.
Advertisements

Fast Fourier Transformation
Matrixmultiplikation
11. Matrizen. 11. Matrizen Eine mn-Matrix ist ein Raster aus mn Koeffizienten, die in m Zeilen und n Spalten angeordnet sind. = (aij)1  i  m, 1.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
der Universität Oldenburg
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Konstruktoren.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Seminar parallele Programmierung SS 2003
OpenMP Präsentation im Rahmen des Seminars
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Diskrete Mathematik I Vorlesung Arrays-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Inhalte und Maßnahmen eingegeben haben,
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Einführung in die Programmierung
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
...ich seh´es kommen !.
Einführung in die Matrizenrechnung
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Analyseprodukte numerischer Modelle
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Der Erotik Kalender 2005.
Rechnerstrukturen 3b. Endliche Automaten.
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Algorithmische Skelette
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
 Präsentation transkript:

Datenparallele Algorithmische Skelette in Muesli Dominik Pfeiffer Münster, 31. Mai 2007

Gliederung Motivation Grundlegende Begriffe Die Skelettbibliothek Muesli Beispielprogramm Zusammenfassung und Bewertung

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

Gliederung Motivation Grundlegende Begriffe Funktionen höherer Ordnung Partielle Applikationen Algorithmische Skelette Die Skelettbibliothek Muesli Beispielprogramm Zusammenfassung und Bewertung

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

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

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

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

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

Gliederung Motivation Grundlegende Begriffe Die Skelettbibliothek Muesli Übersicht Verteilte Datenstrukturen Map ZipWith Fold Beispielprogramm Zusammenfassung und Bewertung

Übersicht Muesli ist eine Skelettbibliothek Implementierung 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

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

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

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<R> map (R (*f)(E)) Varianten DistributedMatrix<R> 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

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

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<R> zipWith ( const DistributedMatrix<E2>& b, R (*f)(E,E2)) Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

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(Elem1, f(Elem2, … f(Elemn-1, Elemn)…)) Kommunikation erforderlich Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

Fold (3/3) Beispiel Skelettdefinition in Muesli: 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

Gliederung Motivation Grundlegende Begriffe Die Skelettbibliothek Muesli Beispielprogramm Hintergrund Programmablauf Implementierung Zusammenfassung und Bewertung

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

Programmablauf Erstellen zweier 4x4-Übergangsmatrizen Matrix 1: Die ersten beiden Zeilen mit 0,5 und der Rest mit 0 belegt Matrix 2: Einheitsmatrix Kombinieren der Matrizen 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

Implementierung (1/5) Initialisieren der Skelettbibliothek InitSkeletons(argc, argv); Initialisieren der ersten Übergangsmatrix DistributedMatrix<double> 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; } m1= Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

Implementierung (2/5) Initialisieren der zweiten Übergangsmatrix DistributedMatrix<double> 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); m2= m1= Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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(); m1= Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

Implementierung (5/5) Vollständiger Quellcode (Teil 2) int main(int argc, char **argv) { InitSkeletons(argc, argv); // Initialisieren der Skelette DistributedMatrix<double> M1(4, 4, 1, 4); // Initialisieren der Matrizen M1.mapIndexInPlace(&firsttwo); DistributedMatrix<double> 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

Gliederung Motivation Grundlegende Begriffe Die Skelettbibliothek Muesli Beispielprogramm Zusammenfassung und Bewertung

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

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++ 3.3.3 MPI 1.2.x Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

Zusammenfassung Algorithmische Skelette Muesli 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

Vielen Dank für eure Aufmerksamkeit!

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

Global vs. Lokal Wahl zwischen der Betrachtungsweise des Problems 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