Requirements#

Compiler Versions#

Generally Kokkos should work with all compiler versions newer than the minimum. 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.

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 [build issues](BUILD.md#KnownIssues).

  • 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.