restore manual control of CUDA while keeping default enabled

This commit is contained in:
Stefano Sinigardi
2019-02-20 15:29:56 +01:00
parent f950085a45
commit 20757e217f
2 changed files with 17 additions and 15 deletions

View File

@ -19,10 +19,14 @@ endif()
enable_language(C) enable_language(C)
enable_language(CXX) enable_language(CXX)
set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build")
include(CheckLanguage) include(CheckLanguage)
check_language(CUDA) check_language(CUDA)
if(CMAKE_CUDA_COMPILER) if(CMAKE_CUDA_COMPILER)
enable_language(CUDA) enable_language(CUDA)
else()
set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build")
endif() endif()
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 11)
@ -43,7 +47,7 @@ set(CUDA_COMPUTE_MODEL_35 "35") #Compute capability for Tesla K20/K40
set(CUDA_COMPUTE_MODEL_30 "30") #Compute capability for Tesla K10, Quadro K4000 set(CUDA_COMPUTE_MODEL_30 "30") #Compute capability for Tesla K10, Quadro K4000
set(default_cuda_compute_model ${CUDA_COMPUTE_MODEL_30}) set(default_cuda_compute_model ${CUDA_COMPUTE_MODEL_30})
if(CMAKE_CUDA_COMPILER AND NOT CUDA_COMPUTE_MODEL) if(ENABLE_CUDA AND NOT CUDA_COMPUTE_MODEL)
message(STATUS "Setting the compute model to ${default_cuda_compute_model} as none was specified.") message(STATUS "Setting the compute model to ${default_cuda_compute_model} as none was specified.")
set(CUDA_COMPUTE_MODEL "${default_cuda_compute_model}" CACHE set(CUDA_COMPUTE_MODEL "${default_cuda_compute_model}" CACHE
STRING "Choose the best compute model supported by your GPU" FORCE) STRING "Choose the best compute model supported by your GPU" FORCE)
@ -95,12 +99,10 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
string(REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) string(REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
endif() endif()
if(NOT USE_INTEGRATED_LIBS) if(APPLE)
if(APPLE) find_package(OpenCV PATHS "/usr/local/Cellar/opencv@3/3.4.5" NO_DEFAULT_PATH)
find_package(OpenCV PATHS "/usr/local/Cellar/opencv@3/3.4.5" NO_DEFAULT_PATH) else()
else() find_package(OpenCV)
find_package(OpenCV)
endif()
endif() endif()
if(OpenCV_FOUND) if(OpenCV_FOUND)
@ -108,9 +110,9 @@ if(OpenCV_FOUND)
include_directories(${OpenCV_INCLUDE_DIRS}) include_directories(${OpenCV_INCLUDE_DIRS})
endif() endif()
if(CMAKE_CUDA_COMPILER) if(ENABLE_CUDA)
add_definitions(-DGPU) add_definitions(-DGPU)
if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL 75 AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9) if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${CUDA_COMPUTE_MODEL_75} AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9)
message(STATUS "CUDA 10 is required for Compute Model 7.5 - Lowering settings to 7.0") message(STATUS "CUDA 10 is required for Compute Model 7.5 - Lowering settings to 7.0")
set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70}) set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70})
endif() endif()
@ -118,7 +120,7 @@ if(CMAKE_CUDA_COMPILER)
if(CUDNN_FOUND) if(CUDNN_FOUND)
add_definitions(-DCUDNN) add_definitions(-DCUDNN)
include_directories(${CUDNN_INCLUDE_DIR}) include_directories(${CUDNN_INCLUDE_DIR})
if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL 53) if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${CUDA_COMPUTE_MODEL_70})
add_definitions(-DCUDNN_HALF) add_definitions(-DCUDNN_HALF)
message(STATUS "Enabled CUDNN_HALF") message(STATUS "Enabled CUDNN_HALF")
endif() endif()
@ -195,7 +197,7 @@ list(REMOVE_ITEM sources
${CMAKE_CURRENT_LIST_DIR}/src/getopt.c ${CMAKE_CURRENT_LIST_DIR}/src/getopt.c
) )
if(CMAKE_CUDA_COMPILER) if(ENABLE_CUDA)
file(GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu") file(GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu")
endif() endif()
@ -215,7 +217,7 @@ set_source_files_properties(${sources} PROPERTIES LANGUAGE CXX)
add_library(darklib SHARED ${CMAKE_CURRENT_LIST_DIR}/include/yolo_v2_class.hpp ${CMAKE_CURRENT_LIST_DIR}/src/yolo_v2_class.cpp ${sources} ${headers} ${cuda_sources}) add_library(darklib SHARED ${CMAKE_CURRENT_LIST_DIR}/include/yolo_v2_class.hpp ${CMAKE_CURRENT_LIST_DIR}/src/yolo_v2_class.cpp ${sources} ${headers} ${cuda_sources})
set_target_properties(darklib PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(darklib PROPERTIES POSITION_INDEPENDENT_CODE ON)
if(CMAKE_CUDA_COMPILER) if(ENABLE_CUDA)
set_target_properties(darklib PROPERTIES CUDA_SEPARABLE_COMPILATION ON) set_target_properties(darklib PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
endif() endif()
target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1) target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1)
@ -264,7 +266,7 @@ endif()
target_link_libraries(darknet Threads::Threads) target_link_libraries(darknet Threads::Threads)
target_link_libraries(darklib Threads::Threads) target_link_libraries(darklib Threads::Threads)
if(CMAKE_CUDA_COMPILER) if(ENABLE_CUDA)
target_link_libraries(darknet curand cublas) target_link_libraries(darknet curand cublas)
target_link_libraries(darklib curand cublas) target_link_libraries(darklib curand cublas)
endif() endif()

View File

@ -24,13 +24,13 @@ include(FindPackageHandleStandardArgs)
if(NOT CUDNN_INCLUDE_DIR) if(NOT CUDNN_INCLUDE_DIR)
find_path(CUDNN_INCLUDE_DIR cudnn.h find_path(CUDNN_INCLUDE_DIR cudnn.h
HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} $ENV{cudnn}
PATH_SUFFIXES cuda/include include) PATH_SUFFIXES cuda/include include)
endif() endif()
if(NOT CUDNN_LIBRARY) if(NOT CUDNN_LIBRARY)
find_library(CUDNN_LIBRARY cudnn find_library(CUDNN_LIBRARY cudnn
HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} $ENV{cudnn}
PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64) PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64)
endif() endif()