• MPI

  • Message Passing Interface (MPI) ist ein Standard, der den Nachrichtenaustausch bei parallelen Berechnungen auf verteilten Computersystemen beschreibt.

  • Leistungen seitens SCC:
    Bereitstellung:

MPI

Das Message Passing Interface (MPI) ist eine herstellerunabhängige Programmierschnittstelle zur Entwicklung paralleler Applikationen für Parallelrechner oder Workstation-Cluster, die zu einem Paralellrechner mit verteiltem Speicher (distrubuted memory) zusammengeschaltet werden sollen, und dient als Hilfsmittel zur Kommunikation zwischen voneinander unabhängigen Prozessoren mit eigenem lokalen Speicher. MPI wird von vielen Parallelrechnerherstellern implementiert. Außerdem existieren verschiedene Public Domain Implementierungen.
Ein Beispielprogramm in Fortran könnte etwa folgendermaßen aussehen:

 

...
include 'mpif.h'

call MPI_INIT( ierr )
call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr )
call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr )
if ( myid .eq. 0 ) then
call MPI_SEND(.....)
else
call MPI_RECV(.....)
endif

call MPI_FINALIZE(ierr)

 

 

 
Dieses Programm läuft x-mal auf dem Rechner, auf dem das Programm <executable> üblicherweise durch den Aufruf
mpirun -np x <executable>
gestartet wird; es wird nur anhand der Variablen myid unterschieden, ob es sich um den master- oder einen slave-Prozess handelt.

Am SCC kann MPI auf allen Parallelrechnern genutzt werden. Es stehen die Implementierungen OpenMPI und Intel MPI zur Verfügung.

 

MPI auf den HPC-Systemen des SCC

Verschiedene Programmierkonzepte werden zum Schreiben von parallelen Anwendungen benutzt und werden demzufolge auf den HPC-Systemen angeboten. Dies  beinhaltet die Konzepte zum Programmieren von Rechnern mit verteiltem Speicher sowie Rechnern mit gemeinsamem Speicher. Auf Rechnern mit verteiltem Speicher wird meistens das "message passing" Programmiermodell genutzt, d.h. der Programmierer muss Unterprogrammaufrufe aus einer Kommunikationsbibliothek in sein Programm einfügen, um Daten von einer Task zu einer anderen zu übertragen. In den letzten Jahren hat sich das "Message Passing Interface" (MPI) zum "De Facto"-Standard entwickelt. Auf den HPC-Systemen ist MPI ein Teil der parallelen Umgebung. Sie finden hier Informationen zu den folgenden Themen:   
  

 

Kompilieren und Binden von MPI Programmen

Es gibt spezielle Compilerskripte, um MPI Programme zu kompilieren und zu binden. Diese Skripte beginnen mit demThese scripts start with the prefix mpi:

mpicc                                                 Kompilieren und Binden von C Programmen

mpiCC                                               Kompilieren und Binden von C++ Programmen

mpif77 or mpif90                             Kompilieren und Binden von Fortran Programmen

 

Weitere Informationen zu MPI finden Sie im jeweiligen User Guide oder bei den herstellerspezifischen Informationen zu MPI auf der Webseite "Online Manuals".

 

Ausführen von parallelen Programmen

Parallele Programme können interaktiv oder unter der Kontrolle eines Batchsystems gestartet werden. Beim interaktiven Starten von Programmen ist es nicht möglich, einen anderen Knoten als den, auf dem Sie eingeloggt sind, zu benutzen.

Die Syntax, um parallele Applikationen zu starten, ist

mpirun  [ mpirun_Optionenprogram

oder

mpirun  [ mpirun_Optionen ]  -f  appfile         (bei Benutzung von OpenMPI)

bzw.

mpirun [ mpirun_Optionen ]  exe1:exe2:...    (bei Benutzung von Intel MPI)

sowohl für interaktive Aufrufe als auch für Aufrufe in Shellskripten, um Batchjobs auszuführen. Die mpirun_Optionen sind für OpenMPI und Intel MPI unterschiedlich.

Um eine parallele Anwendung als Batchjob zu starten, muß das Shellskript, das gewöhnlich für das Kommando sbatch erforderlich ist, das Kommando mpirun mit der Anwendung als Eingabedatei enthalten.

Wichtig für das Verständnis: die Option -n # ist erforderlich, wenn mpirun interaktiv aufgerufen wird, wird aber beim Aufruf von mpirun in Batchjobs (die Anzahl der in Batchjobs benutzten Prozessoren wird durch eine Option des Kommandos sbatch kontrolliert) ignoriert. Es gibt keine Option, um die Anzahl der Knoten zu spezifizieren!

 

Lehrveranstaltungen zu MPI

 

Dokumentationen zu MPI

 

 

Same text in English  -  Same text in English  -  Same text in English  -  Same text in English  -  Same text in English

 

MPI on HP XC Systems

Different programming concepts for writing parallel programs are used in high performance computing and are therefore supported on the HP XC systems. This includes concepts for programming of distributed memory systems as well as for shared memory systems. For distributed memory systems most often explicit message passing is used, i.e. the programmer has to introduce calls to a communication library to transfer data from one task to another one. As a de facto standard for this type of parallel programming the Message Passing Interface (MPI) has been established during the last years. On the HP XC systems MPI is part of the parallel environment. You will find here information on the following topics:

 

Compiling and linking MPI Programs

There are special compiler scripts to compile and link MPI programs. These scripts start with the prefix mpi:

mpicc                                                   compile and link C programs

mpiCC                                                 compile and link C++ programs

mpif77 or mpif90                               compile and link Fortran programs

Further informations on MPI can be found in the respective User Guide or at the manufacturer specific informations on the website "Online Manuals".

 

Execution of parallel Programs

Parallel programs can be started interactively or under control of the batch system. By launching programs interactively you won't be able to use another node than the one you are logged in.

The syntax to start a parallel application is

mpirun  [ mpirun_options ] program

or

 

mpirun  [ mpirun_options ]  -f  appfile         (using OpenMPI)

bzw.

mpirun [ mpirun_options exe1:exe2:...    (using Intel MPI)

 

 

both for interactive calls and calls within shellscripts to execute batch jobs. The mpirun_options are also the same for both modes.

To start a parallel application as batch job the shellscript that is usually required by the command job_submit must contain the command mpirun with the application as input file.

Important for the understanding: the option -n # is required calling mpirun interactively but is ignored calling mpirun in batch jobs (the number of processors used in batch jobs is controlled by an option of the command sbatch). There is no option to specify the number of nodes!


  

Informations in the web

 

Training

 

Documentation