diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3776d18a3e..fb12b8790e 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -127,7 +127,7 @@ if(PKG_KSPACE) ${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) set(FFT_KOKKOS "KISS" CACHE STRING "FFT library for Kokkos-enabled KSPACE package") - set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT) + set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT MKL_GPU) set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES}) validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES) string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS) @@ -155,6 +155,16 @@ if(PKG_KSPACE) target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT) target_link_libraries(lammps PRIVATE hip::hipfft) endif() + elseif(FFT_KOKKOS STREQUAL "MKL_GPU") + if(NOT Kokkos_ENABLE_SYCL) + message(FATAL_ERROR "Using MKL_GPU FFT currently requires the SYCL backend of Kokkos.") + endif() + find_package(MKL REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_MKL_GPU) + target_link_libraries(lammps PRIVATE mkl_sycl_dft mkl_intel_ilp64 mkl_tbb_thread mkl_core tbb) + elseif(FFT_KOKKOS STREQUAL "MKL") + find_package(MKL REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_MKL) endif() endif() diff --git a/cmake/presets/kokkos-sycl-intel.cmake b/cmake/presets/kokkos-sycl-intel.cmake new file mode 100644 index 0000000000..3fc75e4b2d --- /dev/null +++ b/cmake/presets/kokkos-sycl-intel.cmake @@ -0,0 +1,18 @@ +# preset that enables KOKKOS and selects SYCL compilation with OpenMP +# enabled as well. Also sets some performance related compiler flags. +set(PKG_KOKKOS ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SYCL ON CACHE BOOL "" FORCE) + +# hide deprecation warnings temporarily for stable release +set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE) + +set(CMAKE_CXX_COMPILER icpx CACHE STRING "" FORCE) +set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE) +# Silence everything +set(CMAKE_CXX_FLAGS "-w" CACHE STRING "" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code -fsycl-max-parallel-link-jobs=32 -fsycl-targets=spir64_gen -Xsycl-target-backend \"-device 12.60.7\" " CACHE STRING "" FORCE) +set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=spir64_gen" CACHE STRING "" FORCE) diff --git a/cmake/presets/kokkos-sycl.cmake b/cmake/presets/kokkos-sycl-nvidia.cmake similarity index 100% rename from cmake/presets/kokkos-sycl.cmake rename to cmake/presets/kokkos-sycl-nvidia.cmake