diff --git a/CMakeLists.txt b/CMakeLists.txt index 31f10088c..48f903b3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,12 +51,15 @@ if("${DDC_Kokkos_DEPENDENCY_POLICY}" STREQUAL "AUTO") find_package(Kokkos 4.4...4.5 QUIET) if(NOT Kokkos_FOUND) ddc_configure_kokkos() + else() + ddc_check_required_kokkos_options() endif() endif() elseif("${DDC_Kokkos_DEPENDENCY_POLICY}" STREQUAL "EMBEDDED") ddc_configure_kokkos() elseif("${DDC_Kokkos_DEPENDENCY_POLICY}" STREQUAL "INSTALLED") find_package(Kokkos 4.4...4.5 REQUIRED) + ddc_check_required_kokkos_options() endif() ## PDI diff --git a/cmake/DDCVendorConfiguration.cmake b/cmake/DDCVendorConfiguration.cmake index a4da702a0..7fa0b404e 100644 --- a/cmake/DDCVendorConfiguration.cmake +++ b/cmake/DDCVendorConfiguration.cmake @@ -42,6 +42,17 @@ macro(ddc_configure_kokkos) add_subdirectory(vendor/kokkos) endmacro() +function(ddc_check_required_kokkos_options) + kokkos_check(DEVICES CUDA RETURN_VALUE is_cuda_enabled) + if("${is_cuda_enabled}") + kokkos_check(OPTIONS CUDA_CONSTEXPR CUDA_RELOCATABLE_DEVICE_CODE) + endif() + kokkos_check(DEVICES HIP RETURN_VALUE is_hip_enabled) + if("${is_hip_enabled}") + kokkos_check(OPTIONS HIP_RELOCATABLE_DEVICE_CODE) + endif() +endfunction() + macro(ddc_configure_kokkos_fft) option(KokkosFFT_ENABLE_HOST_AND_DEVICE "Enable FFT on both host and device" ON) add_subdirectory(vendor/kokkos-fft)