Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007."—  Präsentation transkript:

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

2 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

3 3 Was ist ein Skelett? Grafik: [Co04] Von der unstrukturierten zur strukturierten Programmierung Beispiel „load-balancing“ (Task-Farm):

4 4 eSkel: Konzeption & Ziele Anforderungen  Ansprechend für MPI Programmierer  Schnelle Einarbeitung  Auszahlung in kurzer Zeit Folgerungen  Bibliothek  Basis: C/MPI.

5 5 Paralleles Arbeiten Grafik: [Qu04, S. 11] Daten- und Funktionale Parallelität

6 6 Basiselemente von eSkel Prozesse und Aktivitäten Grafik: [Qu04, S. 11] Aktivitäten Prozesse

7 7 Basiselemente von eSkel  eDM - Atom Tripel: Zeiger, Länge, Typ (vgl. MPI) Spread (= Ausdehnung)  eDM - Collection Bündelung von eDM - Atomen. Datenmodell

8 8 eSkel - Skelette Skelett-Familie „Task-Farm“ Ein Ergebnis pro AtomExpliziter Informationsaustausch Impliziter FarmerFarm1for1Farm Expliziter FarmerSimpleFarm1for1SimpleFarm Grafik vgl: [PK05, S. 3]

9 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

10 10 eSkel - Skelett: Farm void 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) Grafik vgl: [PK05, S. 3] Expliziter Informationsaustausch; impliziter Farmer

11 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: SimpleFarm Expliziter Informationsaustausch; expliziter Farmer

12 12 eSkel - Skelett: Pipeline 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

13 13 Pipeline & Parallelität Grafik: [Qu04, S. 13]

14 14 eSkel - Skelett: Butterfly Fü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

15 15 eSkel - Skelett: Butterfly Grafik: [Co04]

16 16 eSkel - Skelett: Butterfly Grafik: [Co04]

17 17 eSkel - Skelett: Butterfly Grafik: [Co04]

18 18 eSkel - Skelett: Butterfly void Butterfly (int nd, void level(void), MPI_Datatype ty, MPI_Comm comm)

19 19 Skelett - Topologien Grafik vgl: [PK05, S. 3]

20 20 Neuerungen in eSkel 2  Skelette Pipeline, Deal, (Farm, HaloSwap, Butterfly)... Grafik vgl: [BCGH205, S. 2] Deal:

21 21 Neuerungen in eSkel 2  Datenmodell Neu: eDM-Molekül  Interaktionsart explizit: Interaction mode IMPL, EXPL, DEV  Verschachtelungsart explizit: Data mode BUF, STR.

22 22 Neuerungen in eSkel 2 void 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

23 23 Zusammenfassung  Skelette als sinnvolle Grundlage für die parallele Programmierung  Grundlegende Forschungsergebnisse: Verschachtelungs- & Interaktionsmodi  Einarbeitungszeit ~ 1h.

24 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?!).

25 25

26 26 Quellennachweis [BCGH205] A. Benoit, M. Cole, S. Gilmore, J. Hillston: Using eSkel to implement the multiple baseline stereo application, Proceedings of ParCo, Malaga, [Co04] M. Cole: Presentation, School of informatics, Edinburgh, [PK05] M. Poldner, H. Kuchen: On Implementing The Farm Skeleton, Proceedings of HLPP, Werwick, [Qu04] M. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw-Hill, [Tut02] M. Cole: The edinburgh Skeleon library - Tutorial introduction, 2002, URL: Abrufdatum: 24. April 2007.

27 27 „Spread“ Quelle: [Co04, S. 395]


Herunterladen ppt "ESkel – edinburgh Skeleton library Parallele Programmierung mit Skeletten Seminararbeit Ingo Dyrbusch Mai 2007."

Ähnliche Präsentationen


Google-Anzeigen