Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Seminar Parallele und Verteilte Programmierung Julian Pascal Werra Message Passing Interface (MPI)

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar Parallele und Verteilte Programmierung Julian Pascal Werra Message Passing Interface (MPI)"—  Präsentation transkript:

1 Seminar Parallele und Verteilte Programmierung Julian Pascal Werra Message Passing Interface (MPI)

2 2 Gliederungsübersicht B. Parallele und Verteilte Programmierung C. MPI A. Motivation D. Fazit

3 3 Gliederungsübersicht B. Parallele und Verteilte Programmierung C. MPI A. Motivation D. Fazit

4 4 Motivation Technische Fortschritte Hardware ist günstiger geworden Entwicklung von Hochgeschwindigkeits-Netzwerken (z.B. LAN) Entwicklung von Parallelrechnern Warum MPI? Je nach Parallelrechner kann Nachrichtenaustausch notwendig sein MPI ist eine Spezifikation für Datenaustausch auf nachrichtengekoppelten Systemen 3. MPI 4. Fazit 2. Parallele und … 1. Motivation

5 5 Gliederungsübersicht A. Motivation C. MPI 1. Klassifizierung von Parallelrechnern 2. Verteilter und gemeinsamer Speicher B. Parallele und Verteilte Programmierung D. Fazit

6 6 Gliederungsübersicht A. Motivation C. MPI 1. Klassifizierung von Parallelrechnern 2. Verteilter und gemeinsamer Speicher B. Parallele und Verteilte Programmierung D. Fazit

7 7 Klassifizierung von Parallelrechnern 2. Parallele und … 3. MPI 4. Fazit 1. Motivation Single InstructionMultiple Instruction Single Data SISDMISD Multiple Data SIMDMIMD SISD Ein Prozessor mit einem Programmspeicher Einprozessorsysteme (klassische Von-Neumann-Architektur) SIMD Mehrere Prozessoren Zugriff auf gemeinsamen Programm-/Datenspeicher Vektor- und Feldrechner Flynnsche Klassifikation

8 8 Klassifizierung von Parallelrechnern 2. Parallele und … 3. MPI 4. Fazit 1. Motivation Single InstructionMultiple Instruction Single Data SISDMISD Multiple Data SIMDMIMD MISD Jeweils eigener Programm-, aber gemeinsamer Datenspeicher Jeder Prozessor erhält das selbe Datum aus dem Datenspeicher wenig sinnvoll MIMD Jeweils eigener Programm-, aber gemeinsamer Datenspeicher Jeder Prozessor erhält ein separates Datum alle Arten von Multicomputer-/Multiprozessorsystemen Flynnsche Klassifikation

9 9 Gliederungsübersicht A. Motivation C. MPI 1. Klassifizierung von Parallelrechnern 2. Verteilter und gemeinsamer Speicher B. Parallele und Verteilte Programmierung D. Fazit

10 10 Verteilter und gemeinsamer Speicher 2. Parallele und … 3. MPI 4. Fazit 1. Motivation MIMD Multiprozessorsysteme Gemeinsamer Speicher Multicomputersysteme Verteilter Speicher Gemeinsamer Speicher shared memory machine (SMM) Speicher kann zum Datenaustausch genutzt werden Anwendungsgebiet für OpenMP Verteilter Speicher distributed memory machine (DMM) Keine gemeinsame Datenablage, somit Zwang zum Nachrichtenaustausch Anwendungsgebiet für MPI

11 11 Verteilter und gemeinsamer Speicher 2. Parallele und … 3. MPI 4. Fazit 1. Motivation Message Passing Programmiermodell System der Klasse MIMD Kollektion von Prozessoren Je eigener Programmspeicher Verteilter Speicher Nachrichtenaustausch erfolgt über ein Netzwerk

12 12 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

13 13 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

14 14 Grundlagen MPI Spezifikation, die den Nachrichtenaustausch auf verteilten Systemen beschreibt Legt Programm-Bindings (Sprachkonstrukte) fest Implementierungen für C und Fortran (mittlerweile auch Java) Durch einheitliche Schnittstellen portabel Versions-Historie 1994MPI-1 Standard 1995MPI-1.1 (Fehlerbereinigung) 1997MPI-1.2 (Fehlerbereinigung) 1997MPI-2 Standard (Erweiterung um dynamische Prozessverwaltung, parallele Ein/Ausgabe und einseitige Kommunikationsoperationen) 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

15 15 Grundlagen Programmaufbau Innerhalb eines Programms müssen MPI-Funktionen von MPI_Init und MPI_Finalize umschlossen sein MPI_Init Muss die erste aufgerufene MPI-Funktion sein Veranlasst notwendige Vorbereitungen für den Einsatz von MPI MPI_Finalize Muss die letzte aufgerufene MPI-Funktion sein Gibt reservierte Ressourcen wieder frei Sorgt für eine saubere Umgebung (behandelt z.B. nicht zugestellte Nachrichten) 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

16 16 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

17 17 Menge von geordneten Prozessen Ein Prozess kann mehreren Gruppen angehören MPI stellt Funktionen bereit für: Vereinigung / Löschen Schnitt- / Differenz- / Untermengenbildung Anzahl der Prozesse / Bestimmung des Indizes des aufrufenden Prozesses Gleichheitsprüfung zweier Gruppen Das Kommunikationsumfeld einer Prozessgruppe nennt sich Kommunikationsgebiet Prozessgruppen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

18 18 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

19 19 Kommunikatoren Treten nur in Verbindung mit einer Prozessgruppe auf Lokale Darstellung eines Kommunikationsgebiets Inter-Kommunikator:Kommunikation zwischen Gruppen Intra-Kommunikator: Kommunikation innerhalb einer Gruppe MPI stellt Funktionen bereit für: Erzeugung Duplizierung Aufspaltung 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

20 20 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

21 21 Einzeltransfer-Operationen Kommunikation zwischen zwei Prozessen (klassische Sender/Empfänger- Beziehung) Sendeoperation MPI_Send Empfangsoperation MPI_Recv Misch-Operation MPI_Sendrecv Beteiligte Prozesse rufen entsprechende Funktion auf 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

22 22 Einzeltransfer-Operationen #include #include mpi.h int main (int argc, char *argv[]) { int my_rank, source, dest, tag=0; char msg [20]; MPI_Status status; // MPI Initialisieren MPI_Init (&argc, &argv); // Eigenen Rang bestimmen MPI_Comm_rank (MPI_COMM_WORLD, &my_rank); // Der Prozess mit Rang 0 sendet eine Nachricht... if (my_rank == 0){ strcpy (msg, Testnachricht); MPI_Send (msg, strlen(msg)+1, MPI_Char, 1, tag, MPI_COMM_WORLD); } //...und Prozess 1 empfängt sie if (my_rank == 1){ MPI_Recv (msg, 20, MPI_Char, 0, tag, MPI_COMM_WORLD, &status); } // MPI beenden MPI_Finalize(); } 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

23 23 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

24 24 Globale Kommunikations-Operationen Kommunikation zwischen mehreren Prozessen Beteiligte Prozesse rufen die gleiche Funktion mit ggf. unterschiedlichen Parametern auf Welche Funktionalitäten können durch solche Funktionen abgedeckt werden? Broadcast Akkumulation Gather (Unterschiedliche Daten sammeln) Scatter (Unterschiedliche Daten verteilen) Multi-Broadcast Multi-Akkumulation Totaler Austausch 3. MPI 2. Parallele und … 4. Fazit 1. Motivation

25 25 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Broadcast MPI_Bcast Der Wurzelprozess beschickt die beteiligten Prozesse mit den selben Daten

26 26 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Akkumulation MPI_Reduce Der Wurzelprozess empfängt Daten von den beteiligten Prozessen Auf diese Daten wendet er eine Reduktionsoperation an

27 27 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Gather MPI_Gather Der Wurzelprozess sammelt Daten von den beteiligten Prozessen

28 28 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Scatter MPI_Scatter Entspricht grundlegend einem Broadcast Es kann aber an jeden Prozess eine separate Nachricht verschickt werden

29 29 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Multi-Broadcast MPI_Allgather Die beteiligten Prozesse beschicken sich gegenseitig mit Nachrichten Jeder Prozess erhält jede versandte Nachricht Kommt somit ohne ausgezeichneten Wurzelprozess aus

30 30 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Multi-Akkumulation MPI_Allreduce Entspricht einer Akkumulation gefolgt von einem Broadcast Benötigt einen Wurzelprozess, der die Reduktionsoperation vornimmt

31 31 Globale Kommunikations-Operationen 3. MPI 2. Parallele und … 4. Fazit 1. Motivation Totaler Austausch MPI_Alltoall Alle beteiligten Prozesse tauschen sich gegenseitig mit Nachrichten aus Jeder Prozess erhält eine für ihn explizit bestimmte Nachricht

32 32 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung D. Fazit 1. Grundlagen 2. Prozessgruppen C. MPI 3. Kommunikatoren 4. Einzeltransfer-Operationen 5. Globale Kommunikations-Operationen 6. Zeitmessung

33 33 Zeitmessung Typische Fragestellungen Wie lange nimmt die Bearbeitung eines speziellen Problems in Anspruch? Welcher Zeitvorteil ergibt sich durch zusätzliche Hardware? Identifizierung und Quantifizierung von brachliegenden Ressourcen MPI_Wtime liefert einen Zeitstempel MPI_Wtick gibt die Genauigkeit von MPI_Wtime an. Beispielcode Differenz zwischen end und start ergibt benötigte Zeit in Sekunden:... start = MPI_Wtime();... // zu messender Programmteil end = MPI_Wtime(); MPI 2. Parallele und … 4. Fazit 1. Motivation

34 34 Gliederungsübersicht A. Motivation B. Parallele und Verteilte Programmierung C. MPI D. Fazit

35 35 Fazit MPI ist Spezifikation zur Datenübertragung auf nachrichtengekoppelten Systemen Die Kommunikation erfolgt über Kommunikatoren innerhalb von bzw. zwischen Prozessgruppen Eine Kommunikation kann zwischen zwei (Einzeltransfer) oder mehreren (globaler Transfer) Prozessen stattfinden 4. Fazit 2. Parallele und … 3. MPI 1. Motivation

36 36 Ende Vortragender Thema Themensteller Betreuer Julian Pascal Werra Message Passing Interface (MPI) Im Rahmen des Seminars Parallele und Verteilte Programmierung Prof. Dr. Herbert Kuchen Dipl.-Wirt.-Inform. Philipp Ciechanowicz


Herunterladen ppt "Seminar Parallele und Verteilte Programmierung Julian Pascal Werra Message Passing Interface (MPI)"

Ähnliche Präsentationen


Google-Anzeigen