use FindCUDAToolkit.cmake when available (#421)

* use FindCUDAToolkit.cmake when available
* fix selection of CUDATookit targets on Windows
* Indent CMake code as requested by maintainers
This commit is contained in:
Dan Ibanez 2021-11-08 13:14:57 -07:00 committed by GitHub
parent d2620ded4c
commit 13bc913d69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,10 +9,6 @@
# the libraries are located in ${CUDA_TOOLKIT_ROOT_DIR}/lib64.
# Please set cmake variable CUDA_TOOLKIT_ROOT_DIR.
# TODO Eventually should require cmake>=3.17
# and use cmake's FindCUDAToolkit (also helps handle
# shared vs. static libraries).
# Collection of CUDA optional libraries
set(EXPORT_INTERFACE_CUDA_LIBS "")
@ -20,48 +16,98 @@ if (NOT CUDA_FOUND)
find_package(CUDA REQUIRED)
endif ()
if (HYPRE_ENABLE_CUSPARSE)
set(HYPRE_USING_CUSPARSE ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_cusparse_LIBRARY})
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcusparse_static.a)
if (CMAKE_VERSION VERSION_LESS 3.17)
if (HYPRE_ENABLE_CUSPARSE)
set(HYPRE_USING_CUSPARSE ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_cusparse_LIBRARY})
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcusparse_static.a)
endif ()
endif ()
endif ()
if (HYPRE_ENABLE_CURAND)
set(HYPRE_USING_CURAND ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_curand_LIBRARY})
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcurand_static.a)
if (HYPRE_ENABLE_CURAND)
set(HYPRE_USING_CURAND ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_curand_LIBRARY})
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcurand_static.a)
endif ()
endif ()
endif ()
if (HYPRE_ENABLE_CUBLAS)
set(HYPRE_USING_CUBLAS ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_CUBLAS_LIBRARIES})
else ()
if (HYPRE_ENABLE_CUBLAS)
set(HYPRE_USING_CUBLAS ON CACHE BOOL "" FORCE)
if (HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${CUDA_CUBLAS_LIBRARIES})
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublas_static.a)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublasLt_static.a)
endif (HYPRE_SHARED)
endif (HYPRE_ENABLE_CUBLAS)
if (NOT HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublas_static.a)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublasLt_static.a)
endif (HYPRE_SHARED)
endif (HYPRE_ENABLE_CUBLAS)
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a)
endif ()
if (NOT HYPRE_SHARED)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS
${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a)
endif ()
if (HYPRE_ENABLE_GPU_PROFILING)
set(HYPRE_USING_NVTX ON CACHE BOOL "" FORCE)
find_library(NVTX_LIBRARY
NAME libnvToolsExt.so
PATHS ${CUDA_TOOLKIT_ROOT_DIR}/lib64 ${CUDA_TOOLKIT_ROOT_DIR}/lib)
message(STATUS "NVidia tools extension library found in " ${NVTX_LIBRARY})
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${NVTX_LIBRARY})
endif (HYPRE_ENABLE_GPU_PROFILING)
if (HYPRE_ENABLE_GPU_PROFILING)
set(HYPRE_USING_NVTX ON CACHE BOOL "" FORCE)
find_library(NVTX_LIBRARY
NAME libnvToolsExt.so
PATHS ${CUDA_TOOLKIT_ROOT_DIR}/lib64 ${CUDA_TOOLKIT_ROOT_DIR}/lib)
message(STATUS "NVidia tools extension library found in " ${NVTX_LIBRARY})
list(APPEND EXPORT_INTERFACE_CUDA_LIBS ${NVTX_LIBRARY})
endif (HYPRE_ENABLE_GPU_PROFILING)
else()
find_package(CUDAToolkit REQUIRED)
if (HYPRE_SHARED OR WIN32)
set(HYPRE_CUDA_TOOLKIT_STATIC FALSE)
else()
set(HYPRE_CUDA_TOOLKIT_STATIC TRUE)
endif()
if (HYPRE_ENABLE_CUSPARSE)
set(HYPRE_USING_CUSPARSE ON CACHE BOOL "" FORCE)
if (HYPRE_CUDA_TOOLKIT_STATIC)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::cusparse_static)
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::cusparse)
endif ()
endif ()
if (HYPRE_ENABLE_CURAND)
set(HYPRE_USING_CURAND ON CACHE BOOL "" FORCE)
if (HYPRE_CUDA_TOOLKIT_STATIC)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::curand_static)
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::curand)
endif ()
endif ()
if (HYPRE_ENABLE_CUBLAS)
set(HYPRE_USING_CUBLAS ON CACHE BOOL "" FORCE)
if (HYPRE_CUDA_TOOLKIT_STATIC)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::cublas_static CUDA::cublasLt_static)
else ()
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::cublas CUDA::cublasLt)
endif (HYPRE_SHARED)
endif (HYPRE_ENABLE_CUBLAS)
if (HYPRE_CUDA_TOOLKIT_STATIC)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::culibos)
endif (HYPRE_CUDA_TOOLKIT_STATIC)
if (HYPRE_ENABLE_GPU_PROFILING)
set(HYPRE_USING_NVTX ON CACHE BOOL "" FORCE)
list(APPEND EXPORT_INTERFACE_CUDA_LIBS CUDA::nvToolsExt)
endif (HYPRE_ENABLE_GPU_PROFILING)
endif()