seminar: parallele und verteilte programmierung datenparallele algorithmische skelette in muesli...

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

Upload: alwin-monheit

Post on 05-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

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

Seminar: Parallele und Verteilte Programmierung

Datenparallele Algorithmische Skelette in Muesli

Dominik PfeifferMünster, 31. Mai 2007

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

2

Gliederung

1. Motivation

2. Grundlegende Begriffe

3. Die Skelettbibliothek Muesli

4. Beispielprogramm

5. Zusammenfassung und Bewertung

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

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

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

4

Gliederung

1. Motivation

2. Grundlegende Begriffe1. Funktionen höherer Ordnung

2. Partielle Applikationen

3. Algorithmische Skelette

3. Die Skelettbibliothek Muesli

4. Beispielprogramm

5. Zusammenfassung und Bewertung

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

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

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

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

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

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

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

8

Algorithmische Skelette (1/2)

Stellen ein Gerüst für bestimmte Operationen und Kommunikationsmuster bereit

Verbergen die parallele AusführungVermeiden unnötige SpezialisierungKönnen in der sequentiellen Programmierung genutzt werden

Kümmern sich um Low-Level-ProblemeDeadlocksStarvationSynchronisation

Implementierung unter Verwendung von:PolymorphismusFunktionen höherer OrdnungPartielle Applikationen

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

9

Algorithmische Skelette (2/2)

Taskparallele SkeletteTeilen Probleme in sequentiell und parallel abzuarbeitende Aufgaben

Datenparallele SkeletteFühren Operationen auf verteilten Datenstrukturen aus

Laufen intern parallel ab

RechenskeletteBearbeiten die Inhalte der verteilten Datenstruktur

KommunikationsskeletteVersenden Daten

Synchronisieren Prozesse

Ändern die Verteilung der Partitionen auf einzelne Prozesse

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

10

Gliederung

1. Motivation

2. Grundlegende Begriffe

3. Die Skelettbibliothek Muesli1. Übersicht

2. Verteilte Datenstrukturen

3. Map

4. ZipWith

5. Fold

4. Beispielprogramm

5. Zusammenfassung und Bewertung

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

11

Übersicht

Muesli ist eine SkelettbibliothekAlgorithmische Skelette

Verteilte Datenstrukturen

Keine eigene Programmiersprache

ImplementierungC++

Interprozesskommunikation mit MPI

Funktionen höherer Ordnung

Partielle Applikationen

Polymorphismus (Templates)

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

12

Verteilte Datenstrukturen (1/2)

Verteilte Datenstrukturen Array und MatrixAufteilung in Partitionen

Verteilung der Partitionen auf mehrere Prozesse

KonstruktorenGröße der Matrix

Größe der Partition

Initialwert oder –funktion

Hilfsfunktionenget

set

show

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

13

Verteilte Datenstrukturen (2/2)

Kommunikation ist nicht erforderlich

Alle Prozesse führen den gleichen Code ausPartition wird anhand der ProzessID bestimmt

Alle Prozesse haben die gleiche Datenbasis

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

Prozess 1

44434241

34333231

24232221

14131211

xxxx

xxxx

xxxx

xxxx

2221

1211

xx

xx

2423

1413

xx

xx

4241

3231

xx

xx

4443

3433

xx

xx

Prozess 2

Prozess 3

Prozess 4

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

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

VariantenDistributedMatrix<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

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

15

Map (2/2)

BeispielMultiplikation aller Elemente der Matrix mit 2

16151413

1211109

8765

4321

32302826

24222018

16141210

8642

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

P1

65

21

87

43

1413

109

1615

1211

P2

P3 P4

1210

42

1614

86

2826

2018

3230

2422

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

16

ZipWith (1/2)

Rechenskelett

Kombiniert zwei gleiche DatenstrukturenGleiche 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

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

17

ZipWith (2/2)Beispiel: Kombination durch element-

weise Multiplikation

4321

4321

4321

4321

16151413

1211109

8765

4321

64452813

4833209

3221125

16941

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

&

&

&

&

&

=

=

=

=

=

Prozess 4

Prozess 3

Prozess 1

Prozess 2

65

21

87

43

1413

109

1615

1211

21

21

43

43

21

21

43

43

125

41

3221

169

2813

209

6445

4833

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

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 vorErgebnis = f(Elem1, f(Elem2, … f(Elemn-1, Elemn)…))

Kommunikation erforderlich

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

19

Fold (2/3)

BeispielSchritt 1: Vereinigung der Elemente jeder lokalen Partition

Schritt 2: Austausch der Zwischenergebnisse zwischen den Prozessen

65

21

87

43

1413

109

1615

1211

(1 + (2 + (5 + 6))) = 14

(3 + (4 + (7 + 8))) = 22

(9 + (10 + (13 + 14))) = 46

(11 + (12 + (15 + 16))) = 54

P1

P3

P2

P4

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

Sen

d/R

ecei

ve

Sen

d/R

ecei

ve

Send/Receive

Send/Receive

Send/ReceiveSend/Receive

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

20

Fold (3/3)

BeispielSchritt 3: Vereinigung der Zwischenergebnisse durch jeden Prozess

Skelettdefinition in Muesli:E fold (E (*f)(E,E))

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

(14 + (22 + (46 + 54))) = 136

P1

(14 + (22 + (46 + 54))) = 136

P2

(14 + (22 + (46 + 54))) = 136

P3

(14 + (22 + (46 + 54))) = 136

P4

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

21

Gliederung

1. Motivation

2. Grundlegende Begriffe

3. Die Skelettbibliothek Muesli

4. Beispielprogramm1. Hintergrund

2. Programmablauf

3. Implementierung

5. Zusammenfassung und Bewertung

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

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

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

23

Programmablauf

1. Erstellen zweier 4x4-ÜbergangsmatrizenMatrix 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

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

24

Implementierung (1/5)

Initialisieren der SkelettbibliothekInitSkeletons(argc, argv);

Initialisieren der ersten ÜbergangsmatrixDistributedMatrix<double> m1(4,4,1,4);

m1.mapIndexInPlace(&firsttwo);

Hilfsfunktion firsttwodouble 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=

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

25

Implementierung (2/5)

Initialisieren der zweiten ÜbergangsmatrixDistributedMatrix<double> m2(4,4,&identmx,1,4);

Hilfsfunktion identmxdouble identmx(const int a, const int b) { return (a == b) ? 1 : 0;}

Kombinieren der Matrizenm1.zipWithInPlace(m2,&combine);

Hilfsfunktion combinedouble combine(const double a, const double b) { return ((a + b) / 2);}

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

m2=

m1=

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

26

Implementierung (3/5)

Berechnung der Summe aller Werte der Ergebnismatrix

double sum = m1.fold(&add);

Hilfsfunktion adddouble add(const double a, const double b) {

return a + b;

}

Skelettbibliothek beendenTerminateSkeletons();

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

m1=

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

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

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

28

Implementierung (5/5)

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

Vollständiger Quellcode (Teil 2)

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

29

Gliederung

1. Motivation

2. Grundlegende Begriffe

3. Die Skelettbibliothek Muesli

4. Beispielprogramm

5. Zusammenfassung und Bewertung

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

30

Bewertung (Positiv)

Abstraktion von Low-Level-ProgrammierungDeadlocks, 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

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

31

Bewertung (Negativ)

Anzahl beteiligter Prozesse muss Potenz zur Basis 2 sein

Keine freie PartitionierungGröß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 KompilierenGNU Compiler G++ 3.3.3

MPI 1.2.x

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

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

32

Zusammenfassung

Algorithmische SkeletteGerü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

MuesliKeine 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

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

Seminar: Parallele und Verteilte Programmierung

Vielen Dank für eure Aufmerksamkeit!

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

34

PermutePartitionKommunikationsskelett

Ändert die Verteilung der Partitionen auf die ProzesseErwartet bijektive Funktionen als Parameter

4343

2121

4343

2121

ccdd

ccdd

bbaa

bbaa

43

21

aa

aa

43

21

bb

bb

43

21

cc

cc

43

21

dd

dd

43

21

aa

aa

43

21

bb

bb

43

21

cc

cc

43

21

dd

dd

4343

2121

4343

2121

ddcc

ddcc

aabb

aabb

P1

P2

P3

P4

permutePartition

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

35

Global vs. Lokal

Wahl zwischen der Betrachtungsweise des Problems

GlobalIndex der verteilten Datenstruktur

Geeignet für die Lösung eines Problems im Gesamtzusammenhang

LokalIndex der lokalen Partition

Geeignet für Optimierungen

Motivation – Grundlegende Begriffe – Die Skelettbibliothek Muesli – Beispielprogramm – Zusammenfassung

44434241

34333231

24232221

14131211

xxxx

xxxx

xxxx

xxxx

1 2 3 4

2

1

2

1

4

3

2

1

1 21 2lokal

global