From e668cb07fb1f161a385eeadb962b4dea64f7d4d7 Mon Sep 17 00:00:00 2001 From: Zhou Wei <52485244+zhouwei25@users.noreply.github.com> Date: Fri, 27 Nov 2020 16:16:08 +0800 Subject: [PATCH] fix CUDA 11 error on windows (#29101) --- CMakeLists.txt | 1 - cmake/external/boost.cmake | 4 ++++ cmake/external/glog.cmake | 1 + cmake/generic.cmake | 12 ++++++------ paddle/fluid/platform/dynload/dynamic_loader.cc | 11 ++++++++++- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 12f5b6f8bd8..956f430ab04 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,6 @@ if(WIN32) set(CMAKE_SUPPRESS_REGENERATION ON) set(CMAKE_STATIC_LIBRARY_PREFIX lib) - add_definitions("/DGOOGLE_GLOG_DLL_DECL=") if (MSVC_STATIC_CRT) message(STATUS "Use static C runtime time, refer to https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=vs-2019") diff --git a/cmake/external/boost.cmake b/cmake/external/boost.cmake index e72008354a2..f14195480b7 100644 --- a/cmake/external/boost.cmake +++ b/cmake/external/boost.cmake @@ -38,6 +38,10 @@ set(BOOST_INCLUDE_DIR "${BOOST_SOURCE_DIR}" CACHE PATH "boost include directory. set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1) include_directories(${BOOST_INCLUDE_DIR}) +if(WIN32 AND MSVC_VERSION GREATER_EQUAL 1600) + add_definitions(-DBOOST_HAS_STATIC_ASSERT) +endif() + ExternalProject_Add( ${BOOST_PROJECT} ${EXTERNAL_PROJECT_LOG_ARGS} diff --git a/cmake/external/glog.cmake b/cmake/external/glog.cmake index 649152bd436..81d0e642f79 100644 --- a/cmake/external/glog.cmake +++ b/cmake/external/glog.cmake @@ -24,6 +24,7 @@ SET(GLOG_TAG v0.3.5) IF(WIN32) SET(GLOG_LIBRARIES "${GLOG_INSTALL_DIR}/lib/glog.lib" CACHE FILEPATH "glog library." FORCE) SET(GLOG_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4530") + add_definitions("/DGOOGLE_GLOG_DLL_DECL=") ELSE(WIN32) SET(GLOG_LIBRARIES "${GLOG_INSTALL_DIR}/lib/libglog.a" CACHE FILEPATH "glog library." FORCE) SET(GLOG_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) diff --git a/cmake/generic.cmake b/cmake/generic.cmake index 5608a9d54d2..54753862249 100644 --- a/cmake/generic.cmake +++ b/cmake/generic.cmake @@ -448,9 +448,9 @@ function(nv_library TARGET_NAME) message(FATAL "Please specify source file or library in nv_library.") endif() endif(nv_library_SRCS) - if (WIN32) + if (WIN32 AND ${CMAKE_CUDA_COMPILER_VERSION} LESS 11.0) set_target_properties(${TARGET_NAME} PROPERTIES VS_USER_PROPS ${WIN_PROPS}) - endif(WIN32) + endif() endif() endfunction(nv_library) @@ -466,9 +466,9 @@ function(nv_binary TARGET_NAME) add_dependencies(${TARGET_NAME} ${nv_binary_DEPS}) common_link(${TARGET_NAME}) endif() - if (WIN32) + if (WIN32 AND ${CMAKE_CUDA_COMPILER_VERSION} LESS 11.0) set_target_properties(${TARGET_NAME} PROPERTIES VS_USER_PROPS ${WIN_PROPS}) - endif(WIN32) + endif() endif() endfunction(nv_binary) @@ -490,9 +490,9 @@ function(nv_test TARGET_NAME) set_property(TEST ${TARGET_NAME} PROPERTY ENVIRONMENT FLAGS_cpu_deterministic=true) set_property(TEST ${TARGET_NAME} PROPERTY ENVIRONMENT FLAGS_init_allocated_mem=true) set_property(TEST ${TARGET_NAME} PROPERTY ENVIRONMENT FLAGS_cudnn_deterministic=true) - if (WIN32) + if (WIN32 AND ${CMAKE_CUDA_COMPILER_VERSION} LESS 11.0) set_target_properties(${TARGET_NAME} PROPERTIES VS_USER_PROPS ${WIN_PROPS}) - endif(WIN32) + endif() endif() endfunction(nv_test) diff --git a/paddle/fluid/platform/dynload/dynamic_loader.cc b/paddle/fluid/platform/dynload/dynamic_loader.cc index 4d911d12e55..03cd5814afd 100644 --- a/paddle/fluid/platform/dynload/dynamic_loader.cc +++ b/paddle/fluid/platform/dynload/dynamic_loader.cc @@ -67,16 +67,25 @@ static constexpr char cuda_lib_path[] = "/usr/local/cuda/lib64"; static PathNode s_py_site_pkg_path; #if defined(_WIN32) && defined(PADDLE_WITH_CUDA) +static constexpr char* win_cudnn_lib = "cudnn64_" CUDNN_MAJOR_VERSION ".dll"; static constexpr char* win_cublas_lib = "cublas64_" CUDA_VERSION_MAJOR CUDA_VERSION_MINOR ".dll;cublas64_" CUDA_VERSION_MAJOR ".dll"; +#if CUDA_VERSION >= 11000 +static constexpr char* win_curand_lib = + "curand64_" CUDA_VERSION_MAJOR CUDA_VERSION_MINOR + ".dll;curand64_" CUDA_VERSION_MAJOR ".dll;curand64_10.dll"; +static constexpr char* win_cusolver_lib = + "cusolver64_" CUDA_VERSION_MAJOR CUDA_VERSION_MINOR + ".dll;cusolver64_" CUDA_VERSION_MAJOR ".dll;cusolver64_10.dll"; +#else static constexpr char* win_curand_lib = "curand64_" CUDA_VERSION_MAJOR CUDA_VERSION_MINOR ".dll;curand64_" CUDA_VERSION_MAJOR ".dll"; -static constexpr char* win_cudnn_lib = "cudnn64_" CUDNN_MAJOR_VERSION ".dll"; static constexpr char* win_cusolver_lib = "cusolver64_" CUDA_VERSION_MAJOR CUDA_VERSION_MINOR ".dll;cusolver64_" CUDA_VERSION_MAJOR ".dll"; +#endif // CUDA_VERSION #endif static inline std::string join(const std::string& part1, -- GitLab