1 / 27

eSkel – edinburgh Skeleton library

eSkel – edinburgh Skeleton library. Parallele Programmierung mit Skeletten. Mai 2007. Seminararbeit Ingo Dyrbusch. Skelett-Programmierung. Inhalt. Grundlagen Was ist ein Skelett? Ziele von eSkel Daten- vs. Funktionale Parallelität Basiselemente von eSkel Prozesse & Aktivitäten

mingan
Télécharger la présentation

eSkel – edinburgh Skeleton library

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. Was ist ein Skelett? Von der unstrukturierten zur strukturierten Programmierung Beispiel „load-balancing“ (Task-Farm): Grafik: [Co04]

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

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

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

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

  8. eSkel - Skelette Skelett-Familie „Task-Farm“ Grafik vgl: [PK05, S. 3]

  9. eSkel - Skelett: Farm1for1 Ein Ergebnis pro Atom; impliziter Farmer 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 Worker Worker-Aktivität (Zeiger auf C-Funktion) Zuordnung von Prozessen zu Aktivitäten Input eDM-Collection & Typinformationen Output eDM-Collection, Typinformationen & Output-Buffer Communicator (Kontext)

  10. eSkel - Skelett: Farm Expliziter Informationsaustausch; impliziter Farmer 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]

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

  12. eSkel - Skelett: Pipeline Expliziter Informationsaustausch 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]

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

  14. eSkel - Skelett: Butterfly Ein Divide & Conquer Skelett 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.

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

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

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

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

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

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

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

  22. Neuerungen in eSkel 2 Molekül, Interaktions- und Verschachtelungsart am Beispiel der Pipeline-Signatur 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)

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

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

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

More Related