MPI-Tutorial


In diesem Tutorial möchte ich das Message Passing Interface (MPI) vorstellen. Das Tutorial selbst befindet sich noch im Aufbau, so dass zum Beispiel eine Navigation zwischen den einzelnen Seiten fehlt. Falls jemand einen Fehler im Text oder Programm-Code entdeckt, würde ich micht auf ein Feedback sehr freuen.

MPI (Message Passing Interface) ist der de-facto Standard für das parallele Programmieren. Was ist überhaupt paralleles Programmieren und wo wird es angewendet? Zum Beispiel benötigt die Berechnung der verschiedenen Wettervorhersagemodelle viel Rechenleistung, damit die Vorhersage am Abend in den Nachrichten bekanntgegebenen werden kann. Dazu muss die Rechnenaufgabe von vielen Prozessoren gleichzeitig vorgenommen werden. Das heißt, eine Aufgabe wird in kleinere Teilaufgaben geteilt und von mehreren Prozessoren berechnet. Die Teilaufgaben werden dann Prozesse genannt, wobei im Normalfall ein Prozess von einem (logischen) Prozessor bearbeitet wird. Während der Berechnung müssen häufig Teilergebnisse zwischen Prozessen ausgetauscht werden, also eine Kommunikation statt finden. MPI unterstützt diese Kommunikation mit verschiedenen Funktionen und ist die eigentlich Hauptaufgabe.

Die grundlegenden Funktionen sollen im folgenden Tutorial näher vorgestellt werden. Das Tutorial beginnt mit der Installation eines MPI-Systems. Danach folgt das gewohnte "Hello World"-Beispiel. Danach wird näher auf die Kommunikation eingegangen. Anschließend wird die Virtuelle Topologie und ihre Bedeutung erklärt. Das Profiling beschäftigt sich mit dem Analysieren und Verbessern eines parallelen Programms. Remote Memory Operations und Parallel I/O wurden mit dem MPI2-Standard eingeführt und sollen den Abschluss dieses Tutorials bilden.


Übersicht

  1. Installation
  2. Hello World
  3. Kommunikation
  4. Virtuelle Topologie
  5. Profiling
  6. Remote Memory Operations
  7. Parallel I/O

Quellen

William Gropp; Ewing Lusk; Rajeev Thakur: Using MPI-2 : advanced features of the message-passing interface. 1999 (Scientific and engineering computation)
MPI-Book
Parallel Environment: MPI Programming
MPI Programming Guide
MPI-Funktionsübersicht