Updated CMake build system to allow for FFT_KOKKOS parameter. Updated CMakeLists.txt to print the correct value when summarizing.
This commit is contained in:
@ -984,21 +984,7 @@ if(PKG_KSPACE)
|
|||||||
message(STATUS "Using non-threaded FFTs")
|
message(STATUS "Using non-threaded FFTs")
|
||||||
endif()
|
endif()
|
||||||
if(PKG_KOKKOS)
|
if(PKG_KOKKOS)
|
||||||
if(Kokkos_ENABLE_CUDA)
|
message(STATUS "Kokkos FFT: ${FFT_KOKKOS}")
|
||||||
if(FFT STREQUAL "KISS")
|
|
||||||
message(STATUS "Kokkos FFT: KISS")
|
|
||||||
else()
|
|
||||||
message(STATUS "Kokkos FFT: cuFFT")
|
|
||||||
endif()
|
|
||||||
elseif(Kokkos_ENABLE_HIP)
|
|
||||||
if(FFT STREQUAL "KISS")
|
|
||||||
message(STATUS "Kokkos FFT: KISS")
|
|
||||||
else()
|
|
||||||
message(STATUS "Kokkos FFT: hipFFT")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Kokkos FFT: ${FFT}")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(BUILD_DOC)
|
if(BUILD_DOC)
|
||||||
|
|||||||
@ -131,16 +131,31 @@ if(PKG_KSPACE)
|
|||||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp
|
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp
|
${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp
|
||||||
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
|
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
|
||||||
|
set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT)
|
||||||
|
set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES})
|
||||||
|
validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES)
|
||||||
|
string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS)
|
||||||
|
|
||||||
if(Kokkos_ENABLE_CUDA)
|
if(Kokkos_ENABLE_CUDA)
|
||||||
if(NOT (FFT STREQUAL "KISS"))
|
if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "CUFFT")))
|
||||||
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
|
message(FATAL_ERROR "The CUDA backend of Kokkos requires either KISS FFT or CUFFT.")
|
||||||
|
elseif(FFT_KOKKOS STREQUAL "KISS")
|
||||||
|
message(WARNING "Using KISS FFT with the CUDA backend of Kokkos may be sub-optimal.")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS)
|
||||||
|
elseif(FFT_KOKKOS STREQUAL "CUFFT")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_CUFFT)
|
||||||
target_link_libraries(lammps PRIVATE cufft)
|
target_link_libraries(lammps PRIVATE cufft)
|
||||||
endif()
|
endif()
|
||||||
elseif(Kokkos_ENABLE_HIP)
|
elseif(Kokkos_ENABLE_HIP)
|
||||||
if(NOT (FFT STREQUAL "KISS"))
|
if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "HIPFFT")))
|
||||||
|
message(FATAL_ERROR "The HIP backend of Kokkos requires either KISS FFT or HIPFFT.")
|
||||||
|
elseif(FFT_KOKKOS STREQUAL "KISS")
|
||||||
|
message(WARNING "Using KISS FFT with the HIP backend of Kokkos may be sub-optimal.")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS)
|
||||||
|
elseif(FFT_KOKKOS STREQUAL "HIPFFT")
|
||||||
include(DetectHIPInstallation)
|
include(DetectHIPInstallation)
|
||||||
find_package(hipfft REQUIRED)
|
find_package(hipfft REQUIRED)
|
||||||
target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT)
|
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT)
|
||||||
target_link_libraries(lammps PRIVATE hip::hipfft)
|
target_link_libraries(lammps PRIVATE hip::hipfft)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user