Install Intel oneAPI C++ and Fortran compiler
Intel oneAPI is a cross-platform toolset that covers several programming languages including C, C++, Fortran and Python. Intel oneAPI includes the C++ “icpx” compiler, Fortran “ifx” compiler, Intel MKL, and Intel MPI. oneAPI is free-to-use and no login is required to download and install. oneAPI can be installed via package manager or manually.
Package manager install
On Windows, Intel oneAPI can be installed via WinGet:
winget install Intel.OneAPI.BaseToolkit
winget install Intel.OneAPI.HPCToolkit
On Linux, Intel oneAPI is typically available via distro package managers.
Manual install
If the package manager install is not available, the manual install is accomplished by the “online installer” download. The “online” installer can be copied over SSH to an HPC user directory for example and installed from the Terminal.
Install the oneAPI Base Toolkit with options:
- Math Kernel Library (oneMKL)
- (optional) GDB debugger
Install oneAPI HPC toolkit with options:
- Intel MPI library
- Intel C++ compiler
- Intel Fortran compiler
Intel oneAPI version support spans the last couple releases.
Usage
There are distinct usage patterns to access Intel oneAPI compilers on Windows vs. Linux. Set environment variables CC, CXX, FC via script. oneapi-vars sets environment variable CMAKE_PREFIX_PATH so don’t just blindly overwrite that environment variable.
Windows
Windows requires Visual Studio Community to be installed first–IDE integration is optional and we don’t use it.
Visual Studio integration is optional.
If VS integration is installed, cmake -G "Visual Studio 17 2022"
can be used to generate Visual Studio project files with CMake 3.29 or newer.
Otherwise,
at least CMake 3.25.0
is adequate for oneAPI.
On Windows a Start menu shortcut for a oneAPI command prompt is installed. Powershell can also use “oneapi-vars.bat” to set the environment variables as per the oneapi.ps1 in the Gist above.
If CMake Visual Studio generater is desired, ensure:
- CMake ≥ 3.29 is used for the
-T fortran=ifx
option - Intel oneAPI Visual Studio integrations are installed
- use CMake configure options
cmake -Bbuild -G "Visual Studio 17 2022" -T fortran=ifx
Troubleshooting
If problems with finding packages with oneAPI on Windows and CMake occur, ensure that MSYS2 paths aren’t mixed in with the oneAPI environment. See the project CMakeConfigureLog.yaml and look for unwanted paths in the include commands.
Linux
On Linux, oneAPI requires GNU GCC toolchain. Some HPC systems have a too-old GCC version default for Intel oneAPI. This can cause problems with C++ STL linking. If needed, set environment variable CXXFLAGS for Intel GCC toolchain in custom “oneapi.sh” like:
export CXXFLAGS=--gcc-toolchain=/opt/rh/gcc-toolset-12/root/usr/
which can be determined like:
scl enable gcc-toolset-12 "which g++"
If using a CMake toolchain file, instead of CXXFLAGS environment variable, one can set
set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "/opt/rh/gcc-toolset-12/root/usr/")