Skip to content

Commit 5b8e90c

Browse files
Merge pull request #649 from lattice/hotfix/cmake_native_cudalibs
Improve cuda library detection
2 parents 0e26017 + 5b78065 commit 5b8e90c

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ endif()
5050
project("QUDA" VERSION 0.9.0)
5151

5252
if(NOT GITVERSION)
53-
set(GITVERSION ${CMAKE_VERSION})
53+
set(GITVERSION ${PROJECT_VERSION})
5454
endif()
5555

5656

@@ -440,7 +440,7 @@ if(QUDA_INTERFACE_NVTX)
440440
endif(QUDA_INTERFACE_NVTX)
441441

442442
if(QUDA_NVTX)
443-
FIND_LIBRARY(CUDA_NVTX_LIB nvToolsExt ${CUDA_TOOLKIT_ROOT_DIR}/lib/)
443+
FIND_LIBRARY(CUDA_NVTX_LIB nvToolsExt ${CUDA_TOOLKIT_ROOT_DIR}/lib ${CUDA_TOOLKIT_ROOT_DIR}/lib64/)
444444
LIST(APPEND QUDA_LIBS ${CUDA_NVTX_LIB})
445445
endif(QUDA_NVTX)
446446

cmake/FindCUDALibs.cmake

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ macro(cuda_find_library_local_first_with_path_ext _var _names _doc _path_ext )
143143
PATHS "${CUDA_TOOLKIT_TARGET_DIR}" "${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}"
144144
ENV CUDA_PATH
145145
ENV CUDA_LIB_PATH
146-
PATH_SUFFIXES ${_cuda_64bit_lib_dir} "lib" "${_path_ext}lib/Win32" "${_path_ext}lib" "${_path_ext}libWin32"
146+
PATH_SUFFIXES ${_cuda_64bit_lib_dir} "lib" "lib64" "${_path_ext}lib/Win32" "${_path_ext}lib" "${_path_ext}libWin32"
147147
DOC ${_doc}
148148
NO_DEFAULT_PATH
149149
)
@@ -185,6 +185,25 @@ if(NOT CUDA_TOOLKIT_ROOT_DIR AND NOT CMAKE_CROSSCOMPILING)
185185
DOC "CUDA Toolkit location."
186186
NO_DEFAULT_PATH
187187
)
188+
189+
if (CUDA_TOOLKIT_ROOT_DIR)
190+
string(REGEX REPLACE "[/\\\\]?bin[64]*[/\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR})
191+
# We need to force this back into the cache.
192+
set(CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "Toolkit location." FORCE)
193+
set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
194+
set(CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE INTERNAL
195+
"This is the value of the last time CUDA_TOOLKIT_ROOT_DIR was set successfully." FORCE)
196+
set(CUDA_TOOLKIT_TARGET_DIR_INTERNAL "${CUDA_TOOLKIT_TARGET_DIR}" CACHE INTERNAL
197+
"This is the value of the last time CUDA_TOOLKIT_TARGET_DIR was set successfully." FORCE)
198+
endif()
199+
200+
if (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
201+
if(CUDA_FIND_REQUIRED)
202+
message(FATAL_ERROR "Specify CUDA_TOOLKIT_ROOT_DIR")
203+
elseif(NOT CUDA_FIND_QUIETLY)
204+
message("CUDA_TOOLKIT_ROOT_DIR not found or specified")
205+
endif()
206+
endif ()
188207
endif()
189208

190209
if(CMAKE_CROSSCOMPILING)

cmake/FindNVML.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ else()
7676
endif()
7777
endif()
7878

79-
find_library(NVML_LIBRARY NAMES ${NVML_NAMES} PATHS ${NVML_LIB_PATHS} )
79+
find_library(NVML_LIBRARY NAMES ${NVML_NAMES} PATHS ${NVML_LIB_PATHS} HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib ${CUDA_TOOLKIT_ROOT_DIR}/lib64 PATH_SUFFIXES stubs)
8080

8181
find_path(NVML_INCLUDE_DIR nvml.h PATHS ${NVML_INC_PATHS})
8282

lib/CMakeLists.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,8 @@ endif()
9999
target_include_directories(quda PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
100100
$<INSTALL_INTERFACE:include>)
101101

102-
# add dependencies for linking
103-
# if CUDA_CUDA_LIBRARY (driver api) is not found look for stubs
104-
FIND_LIBRARY(CUDA_CUDA_LIBRARY cuda HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib/ ${CUDA_TOOLKIT_ROOT_DIR}/lib/stubs)
105102

106-
target_link_libraries(quda ${CMAKE_THREAD_LIBS_INIT} ${QUDA_LIBS} ${CUDA_CUDA_LIBRARY})
103+
target_link_libraries(quda ${CMAKE_THREAD_LIBS_INIT} ${QUDA_LIBS})
107104

108105
if(QUDA_QIO)
109106
target_link_libraries(quda ${QIO_LIB} ${LIME_LIB})
@@ -136,7 +133,7 @@ endif()
136133

137134
# malloc.cpp uses both the driver and runtime api
138135
# So we need to find the CUDA_CUDA_LIBRARY (driver api) or the stub version
139-
find_library(CUDA_CUDA_LIBRARY cuda HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib/ ${CUDA_TOOLKIT_ROOT_DIR}/lib/stubs)
136+
find_library(CUDA_CUDA_LIBRARY cuda HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib ${CUDA_TOOLKIT_ROOT_DIR}/lib64 PATH_SUFFIXES stubs )
140137
target_link_libraries(quda ${CUDA_CUDA_LIBRARY})
141138

142139
# if we did not find Eigen but downloaded it we need to add it as dependency so the download is done first

0 commit comments

Comments
 (0)