• OpenMP

  • OpenMP definiert eine plattformunabhängige Programmierschnittstelle für "shared memory" Parallelisierung. 

  • Leistungen seitens SCC:

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.