Skip to content

OpenMP offload compilers

Ye Luo edited this page Aug 10, 2022 · 9 revisions

Testing

Testing is done via CTest, ctest --output-on-failure LD_LIBRARY_PATH may needs to be taken care of if not set in the environment for dependent libraries.

build Recipes

GCC

cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran \
      -DCMAKE_CXX_FLAGS="-fopenmp -foffload=\"-lm -latomic\"" -DCMAKE_Fortran_FLAGS="-fopenmp -foffload=\"-lm -latomic\"" \
      ..

AMD AOMP

cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang \
      -DCMAKE_CXX_FLAGS="-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906" \
      -DCMAKE_Fortran_FLAGS="-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906" \
      ..

NVIDIA HPC SDK (PGI)

cmake -DCMAKE_CXX_COMPILER=nvc++ -DCMAKE_Fortran_COMPILER=nvfortran \
      -DCMAKE_CXX_FLAGS="-mp=gpu -gpu=cc70" -DCMAKE_Fortran_FLAGS="-mp=gpu -gpu=cc70"
      ..

IBM XL

cmake -DCMAKE_CXX_COMPILER=xlc++_r -DCMAKE_Fortran_COMPILER=xlf2003_r \
      -DCMAKE_CXX_FLAGS="-std=c++11 -qsmp=omp -qoffload" -DCMAKE_Fortran_FLAGS="-qsmp=omp -qoffload" \
      ..

LLVM Clang

# NVIDIA GPU
cmake -DCMAKE_CXX_COMPILER=clang++ -DENABLE_Fortran=OFF \
      -DCMAKE_CXX_FLAGS="-fopenmp -fopenmp-targets=nvptx64 -Xopenmp-target=nvptx64 -march=sm_70" \
      ..
# AMD GPU
cmake -DCMAKE_CXX_COMPILER=clang++ -DENABLE_Fortran=OFF \
      -DCMAKE_CXX_FLAGS="-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906" \
      ..

Cray CCE

module load craype-accel-nvidia60
cmake -DCMAKE_CXX_COMPILER=CC -DCMAKE_Fortran_COMPILER=ftn -DCMAKE_CXX_FLAGS=-fopenmp -DCMAKE_Fortran_FLAGS=-fopenmp ..

Intel Clang

cmake -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_CXX_FLAGS="-fiopenmp -fopenmp-targets=spir64" -DCMAKE_Fortran_FLAGS="-fiopenmp -fopenmp-targets=spir64" ..