Home | Sitemap  | Impressum | KIT
OpenMP
Ansprechpartner: Dienste:
Lizenztyp:

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 -openmp -o openmp_exe my_openmp_prog.f90   ! Compilieren von Fortran90-Code
icc -c -O3 -openmp -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 allen 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

Starten eines OpenMP Jobs, der keine MPI Nutzung vorsieht, als Batchjob auf einem Knoten mit 8 parallelen Threads:
(10 Minuten CPU-Zeit, 500 MB Hauptspeicher, Produktionsqueue)

job_submit -t 10 -m 500 -p 1/8 -c p openmp_exe

Bitte bedenken Sie, dass die CPU-Zeiten der einzelnen Threads bei OpenMP-Nutzung addiert werden, d.h. bei 10 Minuten CPU-Zeit stehen nur ca. 10/8 (weniger als 2) Minuten  pro Thread zur Verfügung!

Starten eines OpenMP Jobs - mit MPI Nutzung - als Batchjob auf 32*4 Cores mit jeweils 4 parallelen Threads pro Knoten:
(4 Stunden CPU-Zeit, 10 GB Hauptspeicher, Produktionsqueue)

job_submit -t 240 -m 10000 -p 32/4 -c p mpirun openmp_exe

Mit dem Kommando job_info erhalten Sie Auskunft über die maximalen Werte, die Sie beim Zeitbedarf, dem Hauptspeicherbedarf, der Anzahl der Knoten und Threads angeben können.