diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f81c7b524..a0a6856463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -527,6 +527,10 @@ if(CP2K_USE_ACCEL MATCHES "CUDA") endif() set(CP2K_USE_CUDA ON) + + if(CP2K_USE_CUSOLVER_MP) + find_package(CuSolverMP REQUIRED) + endif() message(STATUS ``"-- CUDA compiler and libraries found") elseif(CP2K_USE_ACCEL MATCHES "HIP") enable_language(HIP) diff --git a/cmake/FindCal.cmake b/cmake/FindCal.cmake new file mode 100644 index 0000000000..76ae7deab4 --- /dev/null +++ b/cmake/FindCal.cmake @@ -0,0 +1,33 @@ +#!-------------------------------------------------------------------------------------------------! +#! CP2K: A general program to perform molecular dynamics simulations ! +#! Copyright 2000-2023 CP2K developers group ! +#! ! +#! SPDX-License-Identifier: GPL-2.0-or-later ! +#!-------------------------------------------------------------------------------------------------! + +# Copyright (c) 2022- ETH Zurich +# +# authors : Mathieu Taillefumier + +include(FindPackageHandleStandardArgs) +include(cp2k_utils) + +cp2k_set_default_paths(LIBCAL "Cal") + +cp2k_find_libraries(LIBCAL "cal") +cp2k_include_dirs(LIBCAL "cal.h") + +find_package_handle_standard_args(Cal DEFAULT_MSG CP2K_CAL_LINK_LIBRARIES + CP2K_CAL_INCLUDE_DIRS) + +if(CP2K_LIBCAL_FOUND AND not TARGET CP2K::CAL::cal) + add_library(CP2K::CAL INTERFACE IMPORTED) + set_target_properties(CP2K::CAL::cal PROPERTIES INTERFACE_LINK_LIBRARIES + "${CP2K_CAL_LINK_LIBRARIES}") + set_target_properties(CP2K::CAL::cal PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${CP2K_CAL_INCLUDE_DIRS}") +endif() + +mark_as_advanced(CP2K_CAL_LINK_LIBRARIES) +mark_as_advanced(CP2K_CAL_INCLUDE_DIRS) +mark_as_advanced(CP2K_CAL_FOUND) diff --git a/cmake/FindCuSolverMP.cmake b/cmake/FindCuSolverMP.cmake new file mode 100644 index 0000000000..fe18d0fb2b --- /dev/null +++ b/cmake/FindCuSolverMP.cmake @@ -0,0 +1,37 @@ +#!-------------------------------------------------------------------------------------------------! +#! CP2K: A general program to perform molecular dynamics simulations ! +#! Copyright 2000-2023 CP2K developers group ! +#! ! +#! SPDX-License-Identifier: GPL-2.0-or-later ! +#!-------------------------------------------------------------------------------------------------! + +# Copyright (c) 2022- ETH Zurich +# +# authors : Mathieu Taillefumier + +include(FindPackageHandleStandardArgs) +include(cp2k_utils) + +find_package(Cal Required) +cp2k_set_default_paths(CUSOLVER_MP "CUSOLVER_MP") +cp2k_find_libraries(CUSOLVER_MP "cusolverMp") +cp2k_include_dirs(CUSOLVER_MP "cusolverMp.h") + +find_package_handle_standard_args( + CuSolverMP DEFAULT_MSG CP2K_CUSOLVER_MP_LINK_LIBRARIES + CP2K_CUSOLVER_MP_INCLUDE_DIRS) + +if(CP2K_CUSOLVER_MP_FOUND AND NOT TARGET CP2K::CUSOLVER_MP::cusolver_mp) + add_library(CP2K::CUSOLVER_MP::cusolver_mp INTERFACE IMPORTED) + set_target_properties( + CP2K::CUSOLVER_MP::cusolver_mp + PROPERTIES INTERFACE_LINK_LIBRARIES + "${CP2K_CUSOLVER_MP_LINK_LIBRARIES};CP2K::CAL::cal") + set_target_properties( + CP2K::CUSOLVER_MP::cusolver_mp + PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_CUSOLVER_MP_INCLUDE_DIRS}") +endif() + +mark_as_advanced(CP2K_CUSOLVER_MP_LINK_LIBRARIES) +mark_as_advanced(CP2K_CUSOLVER_MP_INCLUDE_DIRS) +mark_as_advanced(CP2K_CUSOLVER_MP_FOUND) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6b6135ff27..cbe8f188f5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1433,8 +1433,9 @@ if(CP2K_USE_CUDA) else() target_link_libraries( cp2k_cuda_libs - INTERFACE $<$:CUDA::cusolver> CUDA::cufft - CUDA::cufftw CUDA::cublas CUDA::cudart CUDA::cuda_driver) + INTERFACE $<$:CP2K::CUSOLVER_MP::cusolvermp> + CUDA::cufft CUDA::cufftw CUDA::cublas CUDA::cudart + CUDA::cuda_driver) endif() endif()