gemini3d

Build Gemini3D with Intel oneAPI on Linux

Intel oneAPI (no cost) provides Intel MPI, LAPACK, and Scalapack on Linux.

Like LLVM, oneAPI relies on the underlying GCC compiler for libc and libstdc++. Having too old GCC/libc/libstdc++ will fail to build. Ensure your system has GCC 8 or newer to work with Intel oneAPI on Linux.

Install oneAPI Base Toolkit with these options:

Install oneAPI HPC Toolkit with these options:

We recommend making a little shell script named like “~/intel_oneapi.sh”. The contents of this script would be like:

source /opt/intel/oneapi/setvars.sh

export FC=ifx CC=icx CXX=icpx

Intel LLVM “icx”, “icpx”, “ifx” replace the legacy “icc”, “icpc”, “ifx” compilers.

To enable oneAPI in this Terminal:

source ~/intel_oneapi.sh

If there are problems with defaulting to old GCC, specify the GCC toolchain in “~/intel_oneapi.sh” like:

export CXXFLAGS=--gcc-toolchain=/opt/rh/gcc-toolset-11/root/usr/

which can be determined like:

scl enable gcc-toolset-11 "which g++"

One-time Gemini3D external library setup

git clone https://github.com/gemini3d/external

cmake -S external -B external/build -DCMAKE_INSTALL_PREFIX=~/lib_intel

cmake --build external/build

that installs Gemini3d external libraries under ~/lib_intel. This path is arbitrary but should be distinct between compilers.

NOTE: If CMake is too old, install a new CMake:

cmake -S external/scripts/install_cmake

Build and Test Gemini3D

git clone https://github.com/gemini3d/gemini3d

cmake -S gemini3d -B build/gemini3d -DCMAKE_PREFIX_PATH=~/lib_intel

cmake --build gemini3d/build

ctest --test-dir gemini3d/build