Requirements#
Compiler Versions#
Generally, Kokkos should work with all compiler versions newer than the minimum. We also recommend using updated compilers where possible to benefit from improvements. However, in complex code, we have to work around compiler bugs. So compiler versions we don’t test may have issues we are unaware of.
Furthermore, compilers not listed here may work too.
Kokkos 4.x#
Compiler |
Minimum version |
Primary tested versions |
---|---|---|
GCC |
8.2.0 |
8.4.0, latest |
Clang (CPU) |
8.0.0 |
8.0.0, latest |
Clang (CUDA) |
10.0.0 |
12.0.0, 14.0.0 |
AppleClang |
8.0 |
latest |
Intel Classic (not recommended) |
19.0.5 |
2021.8.0 |
IntelLLVM (CPU) |
2021.1.1 |
2023.0.0 |
IntelLLVM (SYCL) (experimental) |
2022.0.0 |
2023.0.0 |
NVCC |
11.0 |
11.0, 11.6, 11.7 |
NVC++ |
22.3 |
22.9 |
NVC++ (OpenACC) (experimental) |
23.7 |
23.7 |
ROCM |
5.2.0 |
5.2.0 |
MSVC |
19.29 |
Latest |
ARM/Clang |
20.1 |
20.1 |
Kokkos 3.x#
Compiler |
Minimum version |
Primary tested versions |
---|---|---|
GCC |
5.3.0 |
5.3.0, 6.1.0, 7.3.0, 8.3, 9.2, 10.0 |
Clang |
4.0.0 |
8.0.0, 9.0.0, 10.0.0, 12.0.0 |
Intel |
17.0.1 |
17.4, 18.1, 19.5 |
NVCC |
9.2.88 |
9.2.88, 10.1, 11.0 |
NVC++ |
21.5 |
NA |
ROCM |
4.5 |
4.5.0 |
MSVC |
19.29 |
19.29 |
IBM XL |
16.1.1 |
16.1.1 |
Fujitsu |
4.5.0 |
NA |
ARM/Clang |
20.1 |
20.1 |
Build system:#
CMake >= 3.16: required
CMake >= 3.18: Fortran linkage. This does not affect most mixed Fortran/Kokkos builds. See known build issues.
CMake >= 3.21.1 for NVC++
Primary tested compiler are passing in release mode with warnings as errors. They also are tested with a comprehensive set of backend combinations (i.e. OpenMP, Pthreads, Serial, OpenMP+Serial, …). We are using the following set of flags:
GCC:
-Wall -Wunused-parameter -Wshadow -pedantic
-Werror -Wsign-compare -Wtype-limits
-Wignored-qualifiers -Wempty-body
-Wclobbered -Wuninitialized
Intel:
-Wall -Wunused-parameter -Wshadow -pedantic
-Werror -Wsign-compare -Wtype-limits
-Wuninitialized
Clang:
-Wall -Wunused-parameter -Wshadow -pedantic
-Werror -Wsign-compare -Wtype-limits
-Wuninitialized
NVCC:
-Wall -Wunused-parameter -Wshadow -pedantic
-Werror -Wsign-compare -Wtype-limits
-Wuninitialized
Note
Other compilers are tested occasionally, in particular when pushing from develop to master branch. These are tested less rigorously without -Werror
and only for a select set of backends.