mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Fix static linking cuDNN without static CUDA (#28378)
Summary: Fixes https://github.com/pytorch/pytorch/pull/27887#issuecomment-544649765 The logs show that `USE_STATIC_CUDNN` is used but not `CAFFE2_STATIC_LINK_CUDA`. Pull Request resolved: https://github.com/pytorch/pytorch/pull/28378 Differential Revision: D18061841 Pulled By: ezyang fbshipit-source-id: 3b9b49953094e02f808ff12107ba4226688d9986
This commit is contained in:
parent
682da8eb43
commit
03d24dba6c
|
|
@ -898,29 +898,18 @@ if(USE_CUDA)
|
|||
# A helper variable recording the list of Caffe2 dependent libraries
|
||||
# torch::cudart is dealt with separately, due to CUDA_ADD_LIBRARY
|
||||
# design reason (it adds CUDA_LIBRARIES itself).
|
||||
set(Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cufft caffe2::curand)
|
||||
set(Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS
|
||||
caffe2::cufft caffe2::curand caffe2::cublas)
|
||||
if(CAFFE2_USE_NVRTC)
|
||||
list(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cuda caffe2::nvrtc)
|
||||
else()
|
||||
caffe2_update_option(USE_NVRTC OFF)
|
||||
endif()
|
||||
if(CAFFE2_USE_CUDNN)
|
||||
IF(CUDNN_STATIC)
|
||||
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()
|
||||
list(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cudnn)
|
||||
else()
|
||||
caffe2_update_option(USE_CUDNN OFF)
|
||||
endif()
|
||||
if(CAFFE2_STATIC_LINK_CUDA)
|
||||
# When statically linking, this must be the order of the libraries
|
||||
LIST(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a" caffe2::cublas)
|
||||
else()
|
||||
LIST(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::cublas)
|
||||
endif()
|
||||
if(CAFFE2_USE_TENSORRT)
|
||||
list(APPEND Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS caffe2::tensorrt)
|
||||
else()
|
||||
|
|
|
|||
|
|
@ -192,9 +192,10 @@ set_property(
|
|||
# library.
|
||||
add_library(torch::cudart INTERFACE IMPORTED)
|
||||
if(CAFFE2_STATIC_LINK_CUDA)
|
||||
set_property(
|
||||
TARGET torch::cudart PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcudart_static.a" rt dl)
|
||||
target_link_libraries(torch::cudart INTERFACE "${CUDA_cudart_static_LIBRARY}")
|
||||
if (NOT WIN32)
|
||||
target_link_libraries(torch::cudart INTERFACE rt dl)
|
||||
endif()
|
||||
else()
|
||||
set_property(
|
||||
TARGET torch::cudart PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
|
|
@ -214,14 +215,20 @@ if(CAFFE2_USE_CUDNN)
|
|||
set_property(
|
||||
TARGET caffe2::cudnn PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CUDNN_INCLUDE_PATH})
|
||||
if(CUDNN_STATIC AND NOT WIN32)
|
||||
target_link_libraries(caffe2::cudnn INTERFACE
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a" dl)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# curand
|
||||
add_library(caffe2::curand UNKNOWN IMPORTED)
|
||||
if(CAFFE2_STATIC_LINK_CUDA)
|
||||
if(CAFFE2_STATIC_LINK_CUDA AND NOT WIN32)
|
||||
set_property(
|
||||
TARGET caffe2::curand PROPERTY IMPORTED_LOCATION
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcurand_static.a")
|
||||
target_link_libraries(caffe2::curand INTERFACE
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a" dl)
|
||||
else()
|
||||
set_property(
|
||||
TARGET caffe2::curand PROPERTY IMPORTED_LOCATION
|
||||
|
|
@ -234,10 +241,10 @@ set_property(
|
|||
# cufft. CUDA_CUFFT_LIBRARIES is actually a list, so we will make an
|
||||
# interface library similar to cudart.
|
||||
add_library(caffe2::cufft INTERFACE IMPORTED)
|
||||
if(CAFFE2_STATIC_LINK_CUDA)
|
||||
set_property(
|
||||
TARGET caffe2::cufft PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcufft_static.a")
|
||||
if(CAFFE2_STATIC_LINK_CUDA AND NOT WIN32)
|
||||
target_link_libraries(caffe2::cufft INTERFACE
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcufft_static.a"
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a" dl)
|
||||
else()
|
||||
set_property(
|
||||
TARGET caffe2::cufft PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
|
|
@ -261,7 +268,7 @@ endif()
|
|||
# cublas. CUDA_CUBLAS_LIBRARIES is actually a list, so we will make an
|
||||
# interface library similar to cudart.
|
||||
add_library(caffe2::cublas INTERFACE IMPORTED)
|
||||
if(CAFFE2_STATIC_LINK_CUDA)
|
||||
if(CAFFE2_STATIC_LINK_CUDA AND NOT WIN32)
|
||||
set_property(
|
||||
TARGET caffe2::cublas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
"${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublas_static.a")
|
||||
|
|
|
|||
|
|
@ -123,7 +123,6 @@ set(TORCH_PYTHON_INCLUDE_DIRECTORIES
|
|||
${CMAKE_BINARY_DIR}/third_party
|
||||
${CMAKE_BINARY_DIR}/third_party/onnx
|
||||
|
||||
${TORCH_ROOT}/third_party/build/nccl/include
|
||||
${TORCH_ROOT}/third_party/gloo
|
||||
${TORCH_ROOT}/third_party/onnx
|
||||
${TORCH_ROOT}/third_party/pybind11/include
|
||||
|
|
@ -249,6 +248,7 @@ if (USE_NCCL)
|
|||
list(APPEND TORCH_PYTHON_SRCS
|
||||
${TORCH_SRC_DIR}/csrc/cuda/python_nccl.cpp)
|
||||
list(APPEND TORCH_PYTHON_COMPILE_DEFINITIONS USE_NCCL)
|
||||
list(APPEND TORCH_PYTHON_LINK_LIBRARIES __caffe2_nccl)
|
||||
endif()
|
||||
|
||||
# In the most recent CMake versions, a new 'TRANSFORM' subcommand of 'list' allows much of the boilerplate of defining the lists
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user