27
eSkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

Embed Size (px)

Citation preview

Page 1: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

eSkel – edinburgh Skeleton libraryParallele Programmierung mit Skeletten

SeminararbeitIngo DyrbuschMai 2007

Page 2: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

2

Skelett-Programmierung

Inhalt Grundlagen

Was ist ein Skelett? Ziele von eSkel Daten- vs. Funktionale Parallelität

Basiselemente von eSkel Prozesse & Aktivitäten Datenmodell

eSkel - Skelette Task-Farm Pipeline Divide & Conquer Skelett - Topologien

Neuerungen in eSkel 2 Zusammenfassung und Ausblick

Page 3: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

3

Was ist ein Skelett?

Grafik: [Co04]

Von der unstrukturierten zur strukturierten Programmierung

Beispiel „load-balancing“ (Task-Farm):

Page 4: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

4

eSkel: Konzeption & ZieleAnforderungen Ansprechend für MPI Programmierer Schnelle Einarbeitung Auszahlung in kurzer Zeit

Folgerungen Bibliothek Basis: C/MPI.

Page 5: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

5

Paralleles Arbeiten

Reihenfolgebeziehung

Aufgabe

TeammitgliedZu bearbeitendes Gebiet

Security System ausschaltenAllan

Rasen mähen Wege säubern Unkraut jätenAllan:

NordparkBernice: Südpark

Charlene: Ostpark Dominic:

Westpark

Ed: Nord- u. Ostpark

Francis: Süd- u.

Westpark

Georgia:Vorgarten Francis:

Hauptgarten

Rasenspränkler checkenAllan

Security System einschaltenAllan

Grafik: [Qu04, S. 11]

Daten- und Funktionale Parallelität

Page 6: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

6

Basiselemente von eSkelProzesse und Aktivitäten

Reihenfolgebeziehung

Aufgabe

TeammitgliedZu bearbeitendes Gebiet

Security System ausschaltenAllan

Rasen mähen Wege säubern Unkraut jätenAllan:

NordparkBernice: Südpark

Charlene: Ostpark Dominic:

Westpark

Ed: Nord- u. Ostpark

Francis: Süd- u.

Westpark

Georgia:Vorgarten Francis:

Hauptgarten

Rasenspränkler checkenAllan

Security System einschaltenAllan

Grafik: [Qu04, S. 11]

Aktivitäten

Prozesse

Page 7: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

7

Basiselemente von eSkel eDM - Atom

Tripel: Zeiger, Länge, Typ (vgl. MPI) Spread (= Ausdehnung)

eDM - Collection Bündelung von eDM - Atomen.

Datenmodell

Page 8: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

8

eSkel - SkeletteSkelett-Familie „Task-Farm“

Ein Ergebnis pro Atom

Expliziter Informationsaustausch

Impliziter Farmer Farm1for1 Farm

Expliziter Farmer SimpleFarm1for1 SimpleFarm

Farmer

Worker Worker Worker

Interaktion

Aktivität

Grafik vgl: [PK05, S. 3]

Page 9: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

9

eSkel - Skelett: Farm1for1

void Farm1for1(int nw, eSkel atom t * worker (eSkel atom t *), int col, void *in, int inlen, int inmul, spread t inspr, MPI Datatype inty, void *out, int outlen, int *outmul, spread t outspr, MPI Datatype outty, int outbuffsz, MPI Comm comm);

void Farm1for1 ( int nw,eSkel_atom_t * worker (eSkel_atom_t *),int col,void *in, int inlen, int inmul,spread_t inspr, MPI_Datatype inty,void *out, int outlen, int *outmul, spread_t

outspr,MPI_Datatype outty, int outbuffsz,MPI_Comm comm)

Anzahl der WorkerWorker-Aktivität (Zeiger auf C-Funktion)Zuordnung von Prozessen zu AktivitätenInput eDM-Collection & TypinformationenOutput eDM-Collection, Typinformationen & Output-BufferCommunicator (Kontext)»

Ein Ergebnis pro Atom; impliziter Farmer

Page 10: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

10

eSkel - Skelett: Farmvoid Farm ( int nw,

void worker (void),int col,void *in, int inlen, int inmul,spread_t inspr, MPI_Datatype inty,void *out, int outlen, int *outmul, spread_t

outspr,MPI_Datatype outty, int outbuffsz,MPI_Comm comm)

Farmer

Worker Worker Worker

Interaktion

Aktivität

Grafik vgl: [PK05, S. 3]

Expliziter Informationsaustausch; impliziter Farmer

Page 11: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

11

void SimpleFarm( int nw,void worker (void),int col,void *in, int inlen, int inmul,spread_t inspr, MPI_Datatype inty,void *out, int outlen, int *outmul, spread_t

outspr,MPI_Datatype outty, int outbuffsz,MPI_Comm comm)

eSkel - Skelett: SimpleFarmExpliziter Informationsaustausch; expliziter Farmer

Page 12: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

12

eSkel - Skelett: Pipeline

Arbeitsschritt 1 Arbeitsschritt 2 Arbeitsschritt 3 Arbeitsschritt 4

Interaktion

Aktivität

void Pipeline ( int ns,void (*stages[])(void),int col,spread_t spr[], MPI_Datatype ty[],void *in, int inlen, int inmul,void *out, int outlen, int *outmul, int outbuffsz,MPI_Comm comm)

Grafik vgl: [Tut02, S. 3]

Expliziter Informationsaustausch

Page 13: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

13

Pipeline & Parallelität

Arbeitsschritt 1 Arbeitsschritt 2 Arbeitsschritt 3 Arbeitsschritt 4Fertige Autos

Grafik: [Qu04, S. 13]

Page 14: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

14

eSkel - Skelett: ButterflyFür Divide & Conquer Algorithmen mit folgenden

Eigenschaften:

Alle Aktivitäten in der Teilungsphase Anzahl der Prozesse zu Anfang Potenz von 2 und halbiert

sich von Level zu Level Interaktionen zwischen Prozessoren treten paarweise

auf – in der Form, dass die Dimensionen eines Hypercubes heruntergebrochen werden.

Ein Divide & Conquer Skelett

Page 15: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

15

eSkel - Skelett: Butterfly

Grafik: [Co04]

Page 16: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

16

eSkel - Skelett: Butterfly

Grafik: [Co04]

Page 17: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

17

eSkel - Skelett: Butterfly

Grafik: [Co04]

Page 18: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

18

eSkel - Skelett: Butterfly

void Butterfly ( int nd,void level(void),MPI_Datatype ty,MPI_Comm comm)

Page 19: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

19

Skelett - Topologien

Farmer

WorkerWorker ...

Farm

AufgabenAufgaben

ErgebnisseErgebnisse

Arbeitsschritt 1 Farmer Arbeitsschritt 3

WorkerWorker ...

Farm

Aufgaben Ergebnisse

AufgabenAufgaben

ErgebnisseErgebnisse

Pipeline

Grafik vgl: [PK05, S. 3]

Page 20: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

20

Neuerungen in eSkel 2 Skelette

Pipeline, Deal, (Farm, HaloSwap, Butterfly)

...

Grafik vgl: [BCGH205, S. 2]

Deal:

Page 21: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

21

Neuerungen in eSkel 2 Datenmodell

Neu: eDM-Molekül Interaktionsart explizit: Interaction mode

IMPL, EXPL, DEV Verschachtelungsart explizit: Data mode

BUF, STR.

Page 22: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

22

Neuerungen in eSkel 2void Pipeline ( int ns,

Imode_t imode[],eSkel_molecule_t * (*stages[])(eSkel_molecule_t

*), int col,Dmode_t dmode,spread_t spr[], MPI_Datatype ty[],void *in, int inlen, int inmul,void *out, int outlen, int *outmul, int outbuffsz,MPI_Comm comm)

Molekül, Interaktions- und Verschachtelungsart am Beispiel der Pipeline-Signatur

Page 23: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

23

Zusammenfassung Skelette als sinnvolle Grundlage für die parallele

Programmierung Grundlegende Forschungsergebnisse: Verschachtelungs-

& Interaktionsmodi Einarbeitungszeit ~ 1h.

Page 24: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

24

Ausblick Effizienz der Implementierungen leidet

nachgewiesenermaßen nur wenig eSkel leider noch im Stadium eines Prototyps In Planung:

Mehr Demo-Anwendungen Interne Optimierungen Ausweitung des Skelett-Angebots Vereinfachte API (evtl. neue Basis: JAVA-MPI?!).

Page 25: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

25

Page 26: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

26

Quellennachweis[BCGH205] A. Benoit, M. Cole, S. Gilmore, J. Hillston: Using eSkel to

implement the multiple baseline stereo application, Proceedings of ParCo, Malaga, 2005.

[Co04] M. Cole: Presentation, School of informatics, Edinburgh, 2004.

[PK05] M. Poldner, H. Kuchen: On Implementing The Farm Skeleton, Proceedings of HLPP, Werwick, 2005.

[Qu04] M. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2004.

[Tut02] M. Cole: The edinburgh Skeleon library - Tutorial introduction, 2002, URL: http://homepages.inf.ed.ac.uk/abenoit1/eSkel/, Abrufdatum: 24. April 2007.

Page 27: ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007

27

„Spread“

Prozess 1 Prozess 2 Prozess 3

Lokaler „Spread“: 3 einzelne Datenelemente

Globaler „Spread“: 1 verteiltes DatenelementODER

Datenelement

Prozess

Quelle: [Co04, S. 395]