diff --git a/CMakeLists.txt b/CMakeLists.txt index 3565e430..6883ce81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,10 +19,14 @@ endif() enable_language(C) enable_language(CXX) +set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") + include(CheckLanguage) check_language(CUDA) if(CMAKE_CUDA_COMPILER) enable_language(CUDA) +else() + set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build") endif() 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(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.") set(CUDA_COMPUTE_MODEL "${default_cuda_compute_model}" CACHE 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}) endif() -if(NOT USE_INTEGRATED_LIBS) - if(APPLE) - find_package(OpenCV PATHS "/usr/local/Cellar/opencv@3/3.4.5" NO_DEFAULT_PATH) - else() - find_package(OpenCV) - endif() +if(APPLE) + find_package(OpenCV PATHS "/usr/local/Cellar/opencv@3/3.4.5" NO_DEFAULT_PATH) +else() + find_package(OpenCV) endif() if(OpenCV_FOUND) @@ -108,9 +110,9 @@ if(OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) endif() -if(CMAKE_CUDA_COMPILER) +if(ENABLE_CUDA) 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") set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70}) endif() @@ -118,7 +120,7 @@ if(CMAKE_CUDA_COMPILER) if(CUDNN_FOUND) add_definitions(-DCUDNN) 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) message(STATUS "Enabled CUDNN_HALF") endif() @@ -195,7 +197,7 @@ list(REMOVE_ITEM sources ${CMAKE_CURRENT_LIST_DIR}/src/getopt.c ) -if(CMAKE_CUDA_COMPILER) +if(ENABLE_CUDA) file(GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu") 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}) 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) endif() target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1) @@ -264,7 +266,7 @@ endif() target_link_libraries(darknet Threads::Threads) target_link_libraries(darklib Threads::Threads) -if(CMAKE_CUDA_COMPILER) +if(ENABLE_CUDA) target_link_libraries(darknet curand cublas) target_link_libraries(darklib curand cublas) endif() diff --git a/cmake/Modules/FindCUDNN.cmake b/cmake/Modules/FindCUDNN.cmake index 6e53311a..75fd5261 100644 --- a/cmake/Modules/FindCUDNN.cmake +++ b/cmake/Modules/FindCUDNN.cmake @@ -24,13 +24,13 @@ include(FindPackageHandleStandardArgs) if(NOT CUDNN_INCLUDE_DIR) 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) endif() if(NOT CUDNN_LIBRARY) 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) endif()