Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 7 Nächste Version anzeigen »

Basic Code Compilation

Serial Code

Intel compiler
module load intel
icc -o hello.bin hello.c
ifort -o hello.bin hello.f90
icpc -o hello.bin hello.cpp
GNU Compiler
module load gcc
gcc -o hello.bin hello.c
gfortran -o hello.bin hello.f90
g++ -o hello.bin hello.cpp

Parallel Code with MPI

Examples are for Intel MPI with Intel and GNU compilers, respectively. We recommend using the specific compiler wrappers as follows.

Intel Compiler
module load intel
module load impi
mpiicc -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.c
mpiifort -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.f90 
mpiicpc -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.cpp
GNU Compiler
module load gcc
module load impi
mpigcc -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.c
mpif90 -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.f90
mpigxx -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.cpp

Parallel Code with OpenMP

The syntax of Intel and GNU options differs slightly.

Intel Compiler
module load intel
icc -qopenmp -o hello.bin hello.c 
ifort -qopenmp -o hello.bin hello.f90  
icpc -qopenmp -o hello.bin hello.cpp
GNU Compiler
module load gcc
gcc -fopenmp -o hello.bin hello.c 
gfortran -fopenmp -o hello.bin hello.f90  
g++ -fopenmp -o hello.bin hello.cpp

Hybrid Code with MPI and OpenMP

Intel Compiler
module load intel
module load impi
mpiicc -qopenmp  -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.c 
mpiifort -qopenmp -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.f90  
mpiicpc -qopenmp -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.cpp
GNU Compiler
module load gcc
module load impi
mpigcc -fopenmp -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.c 
mpif90 -fopenmp -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.f90  
mpigxx -fopenmp -Wl,-rpath,$LD_RUN_PATH -o hello.bin hello.cpp

MPI, communication libraries, OpenMP

We provide several communication libraries:

  • Intel MPI
  • OpenMPI

As Intel MPI is the communication library recommended by the system vendor, currently only documentation for Intel MPI is provided, except for application specific documentation.

OpenMP support ist built in with the compilers from Intel and GNU.

Important compiler flags

To make full use of the vectorizing capabilities of the CPUs, AVX512 instructions and the 512bit ZMM registers can be used with the following compile flags with the Intel compilers:

-xCORE-AVX512 -qopt-zmm-usage=high

However, high ZMM usage is not recommended in all cases (read more).

With GNU compilers (GCC 7.x and later), architecture-specific optimization for Skylake and Cascade Lake CPUs is enabled with

-march=skylake-avx512

Using the Intel MKL

The Intel® Math Kernel Library (Intel® MKL) is designed to run on multiple processors and operating systems. It is also compatible with several compilers and third party libraries, and provides different interfaces to the functionality. To support these different environments, tools, and interfaces Intel MKL provides multiple libraries from which to choose.

Check out the link below to see what libraries are recommended for a particular use case. https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/

  • Keine Stichwörter