|
|
|
@ -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() |
|
|
|
|