Message Passing Interface (MPI)

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Fast Fourier Transformation
Datenparallele Algorithmische Skelette in Muesli
PC-Cluster.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Proaktives CONTRL Handling mit B2B by Practice
E / IDE Enhanced / Integrated Device Elektronics
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
OpenMP Präsentation im Rahmen des Seminars
Vortrag im Rahmen des Seminars
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 14.1.
Studiengang Informatik FHDW
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Betreuerin: Kathleen Jerchel
1/25 UNIVERSITY OF PADERBORN Projektgruppe KIMAS Projektgruppe KIMAS MultiAgenten-Systeme Andreas Goebels.
Grundschutztools
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Rechneraufbau & Rechnerstrukturen, Folie 13.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 13.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Duo- und Quad Prozessor-Architektur
Materialien zum Informatikunterricht (Pohlig-Häberle)
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Programmierung paralleler Algorithmen mit MPI
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Gestaltung von Folien mit Powerpoint
Generalisierung/Spezialisierung Subtypisierung/Vererbung
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Auslegung eines Vorschubantriebes
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Travelling Salesman Problem (TSP)
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
Multiprozessoren: Herausforderung für die Software
Analyseprodukte numerischer Modelle
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
JAVA/DSM A Platform for Heterogeneous Computing Serge F. Possono M. Technische Universität Muenchen (TUM) Lehr- und Forschungseinheit Informatik X Rechnertechnik.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Der Erotik Kalender 2005.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Software Engineering SS04 Paralleles Programmieren FH Aachen, Prof. Dr.-Ing. Michael Trautwein Andrej Kühnal, Perez-Otuno Rodrigo.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Middleware in Java vieweg 2005 © Steffen Heinzl, Markus Mathes Kapitel 1: Architektur verteilter Systeme.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Shared Memory Programmierung: Grundlagen
 Präsentation transkript:

Message Passing Interface (MPI) 25.03.2017 Message Passing Interface (MPI) Julian Pascal Werra

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

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

Technische Fortschritte Motivation 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

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

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

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

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

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

Verteilter und gemeinsamer Speicher 3. MPI 4. Fazit 1. Motivation 2. Parallele und … 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

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

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

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

Grundlagen MPI Versions-Historie 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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 1994 MPI-1 Standard 1995 MPI-1.1 (Fehlerbereinigung) 1997 MPI-1.2 (Fehlerbereinigung) 1997 MPI-2 Standard (Erweiterung um dynamische Prozessverwaltung, parallele Ein/Ausgabe und einseitige Kommunikationsoperationen)

Grundlagen Programmaufbau 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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)

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

Menge von geordneten Prozessen Prozessgruppen 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

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

Treten nur in Verbindung mit einer Prozessgruppe auf Kommunikatoren 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

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

Einzeltransfer-Operationen 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

Einzeltransfer-Operationen 1. Motivation 2. Parallele und … 3. MPI 4. Fazit #include <stdio.h> #include <string.h> #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(); }

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

Globale Kommunikations-Operationen 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

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

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

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

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

Globale Kommunikations-Operationen 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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

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

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

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

Typische Fragestellungen Zeitmessung 1. Motivation 2. Parallele und … 3. MPI 4. Fazit 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();

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

Fazit 1. Motivation 2. Parallele und … 3. MPI 4. 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

Ende Vortragender Julian Pascal Werra 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