CMake Keywords#
Important
With version 3.0 all Kokkos CMake keywords are prefixed with Kokkos_ which is case-sensitive.
Recall that to set a keyword in CMake you used the syntax -Dkeyword_name=value.
This page is organized in four sections:
Device Backends#
Description/info |
Default |
|
|---|---|---|
|
To build CUDA backend |
|
|
To build OpenMP backend |
|
|
To build C++ Threads backend |
|
|
To build serial backend |
|
|
To build HIP backend |
|
|
[Experimental] To build the OpenMP target backend |
|
|
[Experimental] To build SYCL backend |
|
|
[Experimental] To build HPX backend |
|
Enable Options#
Description/info |
Default |
|
|---|---|---|
|
Aggressively vectorize loops |
|
|
Print all compiler warnings |
|
|
Activate experimental relaxed constexpr functions |
|
|
Activate experimental lambda features |
(see below) |
|
Use CUDA LDG intrinsics |
|
|
Enable relocatable device code (RDC) for CUDA |
|
|
Use unified memory (UM) by default for CUDA |
|
|
Activate extra debug features - may increase compile times |
|
|
Use bounds checking - will increase runtime |
|
|
Debug check on dual views |
|
|
Enable deprecated code |
|
|
Enable building examples |
|
|
Instantiate multiple kernels at compile time - improve performance but increase compile time |
|
|
Enable relocatable device code (RDC) for HIP |
|
|
Perform extra large memory tests |
|
|
Build tests |
|
|
Create bindings for tuning tools |
|
Kokkos_ENABLE_CUDA_LAMBDA default value is OFF until 3.7 and ON since 4.0
Third-party Libraries (TPLs)#
The following options control enabling TPLs:
Description/info |
Default |
|
|---|---|---|
|
Whether to enable the HPX library |
|
|
Whether to enable the HWLOC library |
|
|
Whether to enable the MEMKIND library |
|
|
Whether to enable the LIBDL library |
|
|
Whether to enable the LIBRT library |
|
The following options control finding and configuring non-CMake TPLs:
Description/info |
Default |
|
|---|---|---|
|
Location of CUDA install prefix for libraries |
PATH Default: |
|
Location of HWLOC install prefix |
PATH Default: |
|
Location of MEMKIND install prefix |
PATH Default: |
|
Location of LIBDL install prefix |
PATH Default: |
|
Location of LIBRT install prefix |
PATH Default: |
The following options control find_package paths for CMake-based TPLs:
Description/info |
Default |
|
|---|---|---|
|
Location of HPX prefix (ROOT) or CMake config file (DIR) |
PATH Default: |
Architecture Keywords#
Description/info |
Default |
|
|---|---|---|
|
Optimize for the local CPU architecture |
|
|
Optimize for ARMv8.2 with SVE Support |
|
|
Optimize for the NVIDIA Ada generation CC 8.9 since Kokkos 4.1 |
|
|
Optimize for AMD GPU MI50/MI60 GFX906 since Kokkos 4.2 |
|
|
Optimize for AMD GPU MI100 GFX908 since Kokkos 4.2 |
|
|
Optimize for AMD GPU MI200 series GFX90A since Kokkos 4.2 |
|
|
Optimize for AMD GPU V620/W6800 GFX1030 since Kokkos 4.2 |
|
|
Optimize for AMD GPU 7900xt GFX1100 since Kokkos 4.2 |
|
|
Optimize for the NVIDIA Ampere generation CC 8.0 |
|
|
Optimize for the NVIDIA Ampere generation CC 8.6 |
|
|
Optimize for AMDAVX architecture |
|
|
Optimize for ARMV80 architecture |
|
|
Optimize for ARMV81 architecture |
|
|
Optimize for ARMV8_THUNDERX architecture |
|
|
Optimize for the ARMV8_THUNDERX2 architecture |
|
|
Optimize for BDW architecture |
|
|
Optimize for BGQ architecture |
|
|
Optimize for the NVIDIA Hopper generation CC 9.0 since Kokkos 4.0 |
|
|
Optimize for HSW architecture |
|
|
Optimize for Intel GPUs, Just-In-Time compilation* |
|
|
Optimize for Intel Iris XeMAX GPU |
|
|
Optimize for Intel GPU Gen9 |
|
|
Optimize for Intel GPU Gen11 |
|
|
Optimize for Intel GPU Gen12LP |
|
|
Optimize for Intel GPU Xe-HP |
|
|
Optimize for Intel GPU Ponte Vecchio/GPU Max |
|
|
Optimize for KEPLER30 architecture |
|
|
Optimize for KEPLER32 architecture |
|
|
Optimize for KEPLER35 architecture |
|
|
Optimize for KEPLER37 architecture |
|
|
Optimize for KNC architecture |
|
|
Optimize for KNL architecture |
|
|
Optimize for MAXWELL50 architecture |
|
|
Optimize for MAXWELL52 architecture |
|
|
Optimize for MAXWELL53 architecture |
|
|
Optimize for AMD GPU V620/W6800 GFX1030 since Kokkos 4.0 (Prefer |
|
|
Optimize for PASCAL60 architecture |
|
|
Optimize for PASCAL61 architecture |
|
|
Optimize for POWER7 architecture |
|
|
Optimize for POWER8 architecture |
|
|
Optimize for POWER9 architecture |
|
|
Optimize for SKX architecture |
|
|
Optimize for SNB architecture |
|
|
Optimize for Sapphire Rapids architecture |
|
|
Optimize for TURING75 architecture |
|
|
Optimize for AMD GPU MI25 GFX900 removed in 4.0 |
|
|
Optimize for AMD GPU MI50/MI60 GFX906 (Prefer |
|
|
Optimize for AMD GPU MI100 GFX908 (Prefer |
|
|
Optimize for AMD GPU MI200 series GFX90A (Prefer |
|
|
Optimize for VOLTA70 architecture |
|
|
Optimize for VOLTA72 architecture |
|
|
Optimize for WSM architecture |
|
|
Optimize for Zen architecture |
|
|
Optimize for Zen2 architecture |
|
|
Optimize for Zen3 architecture |
|
* Kokkos_ARCH_INTEL_GEN enables Just-In-Time compilation for Intel GPUs whereas all the other flags for Intel compilers
request Ahead-Of-Time compilation. Just-In-Time compilation means that the compiler is invoked again when the binaries created
are actually executed and only at that point the architecture to compile for is determined. On the other hand, Ahead-Of-Time
compilation describes the standard model where the compiler is only invoked once to create the binary and the architecture to
compile for is determined before the program is run.
AMD Architectures#
AMD GPU |
Kokkos ARCH |
|---|---|
|
AMD_GFX1100 |
|
AMD_GFX906 |
|
AMD_GFX908 |
|
AMD_GFX90A |
|
AMD_GFX1030 |
|
AMD_GFX1030 |