caffe2_update_option(USE_NVRTC OFF)
endif()
if(CAFFE2_USE_CUDNN)
- list(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cudnn)
+ IF(CUDNN_STATIC_LINKAGE)
+ LIST(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS
+ caffe2::cudnn "${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a" "dl")
+ ELSE()
+ list(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cudnn)
+ ENDIF()
else()
caffe2_update_option(USE_CUDNN OFF)
endif()
SET(AT_CUDA_ENABLED 0)
else()
SET(AT_CUDA_ENABLED 1)
- find_package(CUDA 5.5 REQUIRED)
endif()
IF (NOT AT_CUDA_ENABLED OR NOT CUDNN_FOUND)
# release (3.11.3) yet. Hence we need our own Modules_CUDA_fix to enable sccache.
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../Modules_CUDA_fix)
+ # we dont want to statically link cudart, because we rely on it's dynamic linkage in
+ # python (follow along torch/cuda/__init__.py and usage of cudaGetErrorName).
+ # Technically, we can link cudart here statically, and link libtorch_python.so
+ # to a dynamic libcudart.so, but that's just wasteful
+SET(CUDA_USE_STATIC_CUDA_RUNTIME OFF CACHE INTERNAL "")
+
# Find CUDA.
find_package(CUDA)
if(NOT CUDA_FOUND)
if(DEFINED ENV{CUDNN_LIBRARY})
set(CUDNN_LIBRARY $ENV{CUDNN_LIBRARY})
+ if (CUDNN_LIBRARY MATCHES ".*cudnn_static.a")
+ SET(CUDNN_STATIC_LINKAGE ON)
+ endif()
else()
find_library(CUDNN_LIBRARY ${CUDNN_LIBNAME}
HINTS ${CUDNN_ROOT_DIR} ${CUDA_TOOLKIT_ROOT_DIR}
if(CAFFE2_STATIC_LINK_CUDA)
set_property(
TARGET caffe2::cudart PROPERTY INTERFACE_LINK_LIBRARIES
- "${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcudart_static.a" rt)
+ "${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcudart_static.a" rt dl)
else()
set_property(
TARGET caffe2::cudart PROPERTY INTERFACE_LINK_LIBRARIES