- Fachliche Beratung zur Nutzung
- Schulungen
- Unterstützung bei Nutzung auf HPC-Systemen
-
OpenMP
-
OpenMP definiert eine plattformunabhängige Programmierschnittstelle für "shared memory" Parallelisierung.
- Kontakt:
- Ansprechpartner:
- Dienste:
OpenMP
OpenMP definiert eine plattformunabhängige Programmierschnittstelle für "shared memory" Parallelisierung. In der OpenMP-Spezifikation werden Compilerdirektiven, Umgebungsvariable und wenige Funktionen definiert, so dass ein mit OpenMP parallelisiertes Programm im Allgemeinen ohne Änderungen auch in einer seriellen Version von einem Compiler übersetzt werden kann, der keine Parallelisierung unterstützt. OpenMP ist für die Programmiersprachen Fortran sowie C / C++ definiert.
OpenMP steht auf allen Systemen, auf denen die GNU-Compilersuite ab Version 4.2, die Intel- oder die PGI-Compilersuite läuft. Insbesondere steht OpenMP auf allen Parallelrechnern des SCC zur Verfügung. Auf den Systemen entspricht die Maximalzahl paralleler Threads der Anzahl von Cores innerhalb eines Knotens.
OpenMP beim Einsatz des Intel-Compilers
Quellcode, der sich in der Datei my_openmp_prog.f90
oder my_openmp_prog.c
befindet, wird mit folgenden Kommandos kompiliert:
ifort -c -O3 -qopenmp -o openmp_exe my_openmp_prog.f90 ! Compilieren von Fortran90-Code
icc -c -O3 -qopenmp -o openmp_exe my_openmp_prog.c /* Compilieren von C-Code */
Der Intel-Compiler steht auf allen Systemen des SCC zur Verfügung und ist auf den meisten Systemen der standardmäßig geladene Compiler.
OpenMP beim Einsatz der GNU Compilersuite
Quellcode, der sich in der Datei my_openmp_prog.f90
oder my_openmp_prog.c
befindet, wird mit folgenden Kommandos kompiliert:
gfortran -c -O3 -fopenmp -o openmp_exe my_openmp_prog.f90 ! Compilieren von Fortran90-Code
gcc -c -O3 -fopenmp -o openmp_exe my_openmp_prog.c /* Compilieren von C-Code */
Ab Version 4.2 der GNU-Compilersuite wird OpenMP unterstützt, so dass auf allen HPC-Systemen am SCC OpenMP mit den GNU-Compilern eingesetzt werden kann.
OpenMP beim Einsatz des PGI Compilers
Quellcode, der sich in der Datei my_openmp_prog.f90
oder my_openmp_prog.c
befindet, wird mit folgenden Kommandos kompiliert:
pgf95 -c -O3 -mp -o openmp_exe my_openmp_prog.f90 ! Compilieren von Fortran90-Code
pgcc -c -O3 -mp -o openmp_exe my_openmp_prog.c /* Compilieren von C-Code */
Der PGI-Compiler steht auf einigen HPC-Systemen am SCC zur Verfügung. Er wird durch das Kommando module add pgi
aktiviert.
Linken von OpenMP Jobs
Beim Linken von Programmen, die sowohl "multithreading" mittels OpenMP als auch "message passing" mittels MPI benutzen, müssen die Skripte mpif90, mpicc oder mpiCC für Fortran-, C- oder C++-Programme verwendet werden!
Starten von OpenMP Jobs
Wie man OpenMP Jobs mit und ohne MPI-Nutzung als Batchjob auf den HPC-Systemen startet, kann man im bwUniCluster-Wiki bzw. ForHLR-Wiki nachlesen.
- Veranstaltungsreihe des Rechenzentrums zur Programmierung mit MPI und OpenMP
- OpenMP Homepage
- Open MP Specifications for Fortran and C/C++
- OpenMP Tools