fix cmake issues: always build static heFFTe libs, fixup git hash, cmake output
This commit is contained in:
@ -971,14 +971,15 @@ if(PKG_KOKKOS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(PKG_KSPACE)
|
if(PKG_KSPACE)
|
||||||
if (LMP_HEFFTE)
|
if (FFT_USE_HEFFTE)
|
||||||
message(STATUS "<<< FFT settings >>>
|
message(STATUS "<<< FFT settings >>>
|
||||||
-- Primary FFT lib: heFFTe")
|
-- Primary FFT lib: heFFTe")
|
||||||
if (HEFFTE_BACKEND)
|
if (FFT_HEFFTE_BACKEND)
|
||||||
message(STATUS "heFFTe backend: ${HEFFTE_BACKEND}")
|
message(STATUS "heFFTe backend: ${FFT_HEFFTE_BACKEND}")
|
||||||
else()
|
else()
|
||||||
message(STATUS "heFFTe backend: stock (builtin FFT implementation, tested for corrected but not optimized for production)")
|
message(STATUS "heFFTe backend: stock (builtin FFT implementation, tested for corrected but not optimized for production)")
|
||||||
endif()
|
endif()
|
||||||
|
message(STATUS "Using distributed FFT algorithms from heFTTe")
|
||||||
if(FFT_SINGLE)
|
if(FFT_SINGLE)
|
||||||
message(STATUS "Using single precision FFTs")
|
message(STATUS "Using single precision FFTs")
|
||||||
else()
|
else()
|
||||||
@ -997,14 +998,10 @@ if(PKG_KSPACE)
|
|||||||
else()
|
else()
|
||||||
message(STATUS "Using non-threaded FFTs")
|
message(STATUS "Using non-threaded FFTs")
|
||||||
endif()
|
endif()
|
||||||
if (FFT_HEFFTE)
|
message(STATUS "Using builtin distributed FFT algorithms")
|
||||||
message(STATUS "Using distributed algorithms from heFTTe")
|
endif()
|
||||||
else()
|
if(PKG_KOKKOS)
|
||||||
message(STATUS "Using builtin distributed algorithms")
|
message(STATUS "Kokkos FFT: ${FFT_KOKKOS}")
|
||||||
endif()
|
|
||||||
if(PKG_KOKKOS)
|
|
||||||
message(STATUS "Kokkos FFT: ${FFT_KOKKOS}")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(BUILD_DOC)
|
if(BUILD_DOC)
|
||||||
|
|||||||
@ -50,7 +50,7 @@ option(FFT_USE_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the
|
|||||||
if(FFT_USE_HEFFTE)
|
if(FFT_USE_HEFFTE)
|
||||||
# if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte
|
# if FFT_HEFFTE is enabled, switch the builtin FFT engine with Heffte
|
||||||
set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL)
|
set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL)
|
||||||
set(FFT_HEFFTE_BACKEND "" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL")
|
set(FFT_HEFFTE_BACKEND "${FFT}" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL")
|
||||||
set_property(CACHE FFT_HEFFTE_BACKEND PROPERTY STRINGS ${FFT_HEFFTE_BACKEND_VALUES})
|
set_property(CACHE FFT_HEFFTE_BACKEND PROPERTY STRINGS ${FFT_HEFFTE_BACKEND_VALUES})
|
||||||
|
|
||||||
if(FFT_HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL
|
if(FFT_HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL
|
||||||
@ -60,24 +60,36 @@ if(FFT_USE_HEFFTE)
|
|||||||
set(HEFFTE_COMPONENTS "MKL")
|
set(HEFFTE_COMPONENTS "MKL")
|
||||||
set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe")
|
set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe")
|
||||||
else()
|
else()
|
||||||
|
set(HEFFTE_COMPONENTS "BUILTIN")
|
||||||
message(WARNING "FFT_HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs")
|
message(WARNING "FFT_HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS})
|
find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS})
|
||||||
if (NOT Heffte_FOUND) # download and build
|
if (NOT Heffte_FOUND) # download and build
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
set(BUILD_SHARED_LIBS_WAS_ON YES)
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_REQUEST_PIC)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
endif()
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
FetchContent_Declare(HEFFTE_PROJECT # using v2.4.0
|
FetchContent_Declare(HEFFTE_PROJECT # using v2.4.0
|
||||||
URL "https://github.com/icl-utk-edu/heffte/archive/refs/tags/v2.4.0.tar.gz"
|
URL "https://github.com/icl-utk-edu/heffte/archive/refs/tags/v2.4.0.tar.gz"
|
||||||
URL_HASH SHA256=02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d
|
URL_HASH SHA256=02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d
|
||||||
)
|
)
|
||||||
FetchContent_Populate(HEFFTE_PROJECT)
|
FetchContent_Populate(HEFFTE_PROJECT)
|
||||||
|
# fixup git hash to show "(unknown)" to avoid compilation failures. It cannot derive the HeFFTe hash anyway.
|
||||||
|
file(READ ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h HEFFTE_CFG_FILE_TEXT)
|
||||||
|
string(REPLACE "@Heffte_GIT_HASH@" "(unknown)" HEFFTE_CFG_FILE_TEXT "${HEFFTE_CFG_FILE_TEXT}")
|
||||||
|
file(WRITE ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h "${HEFFTE_CFG_FILE_TEXT}")
|
||||||
add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR})
|
add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR})
|
||||||
set_target_properties(lmp PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
|
|
||||||
set_target_properties(lammps PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
|
|
||||||
add_library(Heffte::Heffte INTERFACE IMPORTED GLOBAL)
|
add_library(Heffte::Heffte INTERFACE IMPORTED GLOBAL)
|
||||||
target_link_libraries(Heffte::Heffte INTERFACE Heffte)
|
target_link_libraries(Heffte::Heffte INTERFACE Heffte)
|
||||||
|
if(BUILD_SHARED_LIBS_WAS_ON)
|
||||||
|
set(BUILD_SHARED_LIBS ON)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(lammps PRIVATE -DFFT_HEFFTE "-DFFT_HEFFTE_${FFT_HEFFTE_BACKEND}")
|
target_compile_definitions(lammps PRIVATE -DFFT_HEFFTE "-DFFT_HEFFTE_${FFT_HEFFTE_BACKEND}")
|
||||||
target_link_libraries(lammps PRIVATE Heffte::Heffte)
|
target_link_libraries(lammps PRIVATE Heffte::Heffte)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -34,7 +34,15 @@
|
|||||||
|
|
||||||
// set strings for library info output
|
// set strings for library info output
|
||||||
|
|
||||||
#if defined(FFT_FFTW3)
|
#if defined(FFT_HEFFTE)
|
||||||
|
#if defined(FFT_HEFFTE_FFTW)
|
||||||
|
#define LMP_FFT_LIB "HeFFTe(FFTW3)"
|
||||||
|
#elif defined(FFT_HEFFTE_MKL)
|
||||||
|
#define LMP_FFT_LIB "HeFFTe(MKL)"
|
||||||
|
#else
|
||||||
|
#define LMP_FFT_LIB "HeFFTe(native)"
|
||||||
|
#endif
|
||||||
|
#elif defined(FFT_FFTW3)
|
||||||
#define LMP_FFT_LIB "FFTW3"
|
#define LMP_FFT_LIB "FFTW3"
|
||||||
#elif defined(FFT_MKL)
|
#elif defined(FFT_MKL)
|
||||||
#define LMP_FFT_LIB "MKL FFT"
|
#define LMP_FFT_LIB "MKL FFT"
|
||||||
@ -42,14 +50,6 @@
|
|||||||
#define LMP_FFT_LIB "cuFFT"
|
#define LMP_FFT_LIB "cuFFT"
|
||||||
#elif defined(FFT_HIPFFT)
|
#elif defined(FFT_HIPFFT)
|
||||||
#define LMP_FFT_LIB "hipFFT"
|
#define LMP_FFT_LIB "hipFFT"
|
||||||
#elif defined(FFT_HEFFT)
|
|
||||||
#if defined(FFT_HEFFTE_FFTW)
|
|
||||||
#define LMP_FFT_LIB "HeFFTe (FFTW3)"
|
|
||||||
#elif defined(FFT_HEFFTE_MKL)
|
|
||||||
#define LMP_FFT_LIB "HeFFTe (MKL)"
|
|
||||||
#else
|
|
||||||
#define LMP_FFT_LIB "HeFFTe (native)"
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#define LMP_FFT_LIB "KISS FFT"
|
#define LMP_FFT_LIB "KISS FFT"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user