Content
Inhalt |
---|
Code execution
For examples for code execution, please visit Slurm partition CPU CLX.
Code compilation
Intel oneAPI compiler
Codeblock | ||||
---|---|---|---|---|
| ||||
module load intel iccicx -o hello.bin hello.c ifortifx -o hello.bin hello.f90 icpcicpx -o hello.bin hello.cpp |
Codeblock | ||||
---|---|---|---|---|
| ||||
module load intel iccicx -qopenmpfopenmp -o hello.bin hello.c ifortifx -qopenmpfopenmp -o hello.bin hello.f90 icpcicpx -qopenmpfopenmp -o hello.bin hello.cpp |
...
GNU compiler
Codeblock | ||||
---|---|---|---|---|
| ||||
module load gcc gcc -o hello.bin hello.c gfortran -o hello.bin hello.f90 g++ -o hello.bin hello.cpp |
Codeblock | ||||
---|---|---|---|---|
| ||||
module load gcc gcc -fopenmp -o hello.bin hello.c gfortran -fopenmp -o hello.bin hello.f90 g++ -fopenmp -o hello.bin hello.cpp |
Code execution
To execute your code you need to
- have a binary, which is the result of code compilation,
- create a slurm job script,
- submit the slurm jobs script.
...
title | Job submission |
---|---|
collapse | true |
...
Slurm job script
The examples for slurm job scripts, e.g. myjobscipt.slurm, that cover the setup
...
Codeblock | ||||
---|---|---|---|---|
| ||||
#SBATCH --nodes=2 #SBATCH --partition=standard96:test module load impi/2019.5 export SLURM_CPU_BIND=none export OMP_PROC_BIND=spread export OMP_NUM_THREADS=96 mpirun -ppn 2 \ -np 1 ./code1.bin : -np 1 ./code2.bin : -np 1 ./code3.bin : -np 1 ./code4.bin |
...
Compiler flags
To make full use of the vectorizing capabilities of the Intel Cascade Lake CPUs, AVX512 AVX-512 instructions and the 512bit 512-bit ZMM registers can be used with the following compile flags with of the Intel compilers:
-xCORE-AVX512 -qopt-zmm-usage=high
However, high ZMM register usage is not recommended in all cases (read more).
With the GNU compilers (GCC 7.x and later), architecture-specific optimization for Skylake and Cascade Lake CPUs is enabled with, the corresponding compiler flags are
-march=skylake-avx512cascadelake -mprefer-vector-width=512
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 Intel's link line advisor to see what libraries are recommended for a particular use case. https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/