- Bereitstellung
- Bereitstellung von Dokumentation
- Betrieb und Pflege der Lizenzserver
- Fachliche Beratung zur Nutzung
- Schulungen
- Unterstützung bei Nutzung auf HPC-Systemen
-
MPI
-
Message Passing Interface (MPI) ist ein Standard, der den Nachrichtenaustausch bei parallelen Berechnungen auf verteilten Computersystemen beschreibt.
- Kontakt:
- Ansprechpartner:
- Dienste:
MPI
...
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) … |
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_Optionen ] program
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
- 2 Veranstaltungen des SCC (im Rahmen einer Vorlesung) zur Programmierung mit MPI und OpenMP
- Praktikum nachrichtengekoppelte Parallelrechner (mit MPI) des Lehrstuhls Informatik für Ingenieure und Naturwissenschaftler Kursmaterialien
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:
-
Documentation and
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
- Programming with MPI and OpenMP (In German)
- Practical training offered by the Institut of Informatics for Engineers and Natural Scientists (In German)