@ -1,5 +1,4 @@
# T o u s e y o u r l i b s , l a u n c h c m a k e w i t h - D U S E _ I N T E G R A T E D _ L I B S : B O O L = F A L S E
# T o e n a b l e C U D A , l a u n c h c m a k e w i t h - D E N A B L E _ C U D A . A l s o i t i s a d v i s a b l e t o s e t t h e h i g h e s t c o m p u t e m o d e l w i t h - D C O M P U T E _ M O D E L = . . . , d e p e n d i n g o n y o u r s p e c i f i c c a r d c a p a b i l i t i e s . I f C U D A i s n o t r e q u i r e d , t h i s s e t t i n g i s c o m p l e t e l y i g n o r e d .
cmake_minimum_required ( VERSION 3.8 FATAL_ERROR )
@ -17,12 +16,13 @@ else()
set ( USE_INTEGRATED_LIBS "FALSE" CACHE BOOL "Use libs distributed with this repo" )
endif ( )
set ( ENABLE_CUDA "FALSE" CACHE BOOL "Enable building with CUDA" )
enable_language ( C )
enable_language ( CXX )
if ( ENABLE_CUDA )
enable_language ( CUDA ) # d o n o t e n a b l e a f t e r s e a r c h i n g f o r O p e n C V p a c k a g e !
include ( CheckLanguage )
check_language ( CUDA )
if ( CMAKE_CUDA_COMPILER )
enable_language ( CUDA )
endif ( )
set ( CMAKE_CXX_STANDARD 11 )
@ -30,24 +30,24 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/" ${CMAKE_MODULE_
include_directories ( ${ CMAKE_CURRENT_LIST_DIR } /include )
include_directories ( ${ CMAKE_CURRENT_LIST_DIR } /src )
set ( COMPUTE_MODEL_75 "75" ) # C o m p u t e c a p a b i l i t y f o r T e s l a T 4 , R T X 2 0 8 0
set ( COMPUTE_MODEL_72 "72" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n X a v i e r
set ( COMPUTE_MODEL_70 "70" ) # C o m p u t e c a p a b i l i t y f o r T e s l a V 1 0 0
set ( COMPUTE_MODEL_62 "62" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 2
set ( COMPUTE_MODEL_61 "61" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 4 0
set ( COMPUTE_MODEL_60 "60" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 1 0 0
set ( COMPUTE_MODEL_53 "53" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 1
set ( COMPUTE_MODEL_52 "52" ) # C o m p u t e c a p a b i l i t y f o r T e s l a M 4 0 / M 6 0
set ( COMPUTE_MODEL_37 "37" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 8 0
set ( COMPUTE_MODEL_35 "35" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 2 0 / K 4 0
set ( COMPUTE_MODEL_30 "30" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 1 0 , Q u a d r o K 4 0 0 0
set ( default_compute_model ${ COMPUTE_MODEL_30 } )
if ( NOT COMPUTE_MODEL )
message ( STATUS "Setting the compute model to ' ${default_compute_model}' as none was specified." )
set ( COMPUTE_MODEL "${default_compute_model}" CACHE
set ( CUDA_C OMPUTE_MODEL_75 "75" ) # C o m p u t e c a p a b i l i t y f o r T e s l a T 4 , R T X 2 0 8 0
set ( CUDA_C OMPUTE_MODEL_72 "72" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n X a v i e r
set ( CUDA_C OMPUTE_MODEL_70 "70" ) # C o m p u t e c a p a b i l i t y f o r T e s l a V 1 0 0
set ( CUDA_C OMPUTE_MODEL_62 "62" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 2
set ( CUDA_C OMPUTE_MODEL_61 "61" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 4 0
set ( CUDA_C OMPUTE_MODEL_60 "60" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 1 0 0
set ( CUDA_C OMPUTE_MODEL_53 "53" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 1
set ( CUDA_C OMPUTE_MODEL_52 "52" ) # C o m p u t e c a p a b i l i t y f o r T e s l a M 4 0 / M 6 0
set ( CUDA_C OMPUTE_MODEL_37 "37" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 8 0
set ( CUDA_C OMPUTE_MODEL_35 "35" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 2 0 / K 4 0
set ( CUDA_C OMPUTE_MODEL_30 "30" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 1 0 , Q u a d r o K 4 0 0 0
set ( default_cuda_c ompute_model ${ CUDA_ COMPUTE_MODEL_30} )
if ( CMAKE_CUDA_COMPILER AND NOT CUDA_ COMPUTE_MODEL)
message ( STATUS "Setting the compute model to ${default_cuda_c ompute_model} as none was specified." )
set ( CUDA_C OMPUTE_MODEL "${default_cuda _compute_model}" CACHE
S T R I N G " C h o o s e t h e b e s t c o m p u t e m o d e l s u p p o r t e d b y y o u r G P U " F O R C E )
set_property ( CACHE COMPUTE_MODEL PROPERTY STRINGS ${ COMPUTE_MODEL_75 } ${ COMPUTE_MODEL_72 } ${ COMPUTE_MODEL_70 } ${ COMPUTE_MODEL_62 } ${ COMPUTE_MODEL_61 } ${ COMPUTE_MODEL_60 } ${ COMPUTE_MODEL_53 } ${ COMPUTE_MODEL_52 } ${ COMPUTE_MODEL_37 } ${ COMPUTE_MODEL_35 } ${ COMPUTE_MODEL_30 } )
set_property ( CACHE CUDA_C OMPUTE_MODEL PROPERTY STRINGS ${ CUDA_C OMPUTE_MODEL_75 } ${ CUDA_ COMPUTE_MODEL_72} ${ CUDA_C OMPUTE_MODEL_70 } ${ CUDA_C OMPUTE_MODEL_62 } ${ CUDA_ COMPUTE_MODEL_61} ${ CUDA_C OMPUTE_MODEL_60 } ${ CUDA_C OMPUTE_MODEL_53 } ${ CUDA_ COMPUTE_MODEL_52} ${ CUDA_C OMPUTE_MODEL_37 } ${ CUDA_C OMPUTE_MODEL_35 } ${ CUDA_ COMPUTE_MODEL_30} )
endif ( )
if ( USE_INTEGRATED_LIBS )
@ -108,17 +108,17 @@ if(OpenCV_FOUND)
include_directories ( ${ OpenCV_INCLUDE_DIRS } )
endif ( )
if ( ENABLE_CUDA )
if ( CMAKE_CUDA_COMPILER )
add_definitions ( -DGPU )
if ( COMPUTE_MODEL VERSION_GREATER_EQUAL 75 AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9 )
if ( CUDA_C OMPUTE_MODEL VERSION_GREATER_EQUAL 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 ( COMPUTE_MODEL "70" )
set ( CUDA_COMPUTE_MODEL ${ CUDA_COMPUTE_MODEL_70 } )
endif ( )
find_package ( CUDNN )
if ( CUDNN_FOUND )
add_definitions ( -DCUDNN )
include_directories ( ${ CUDNN_INCLUDE_DIR } )
if ( COMPUTE_MODEL VERSION_GREATER_EQUAL 53 )
if ( CUDA_C OMPUTE_MODEL VERSION_GREATER_EQUAL 53 )
add_definitions ( -DCUDNN_HALF )
message ( STATUS "Enabled CUDNN_HALF" )
endif ( )
@ -126,29 +126,29 @@ if(ENABLE_CUDA)
if ( MSVC )
if ( CUDNN_FOUND )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DCUDNN,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DCUDNN,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DCUDNN\ " ${CMAKE_CUDA_FLAGS}" )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DCUDNN\ " ${CMAKE_CUDA_FLAGS}" )
endif ( )
else ( )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU\ " ${CMAKE_CUDA_FLAGS}" )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/DGPU\ " ${CMAKE_CUDA_FLAGS}" )
endif ( )
endif ( )
else ( )
if ( CUDNN_FOUND )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
endif ( )
else ( )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${COMPUTE_MODEL},code=[sm_${COMPUTE_MODEL},compute_${COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_C OMPUTE_MODEL},code=[sm_${CUDA_C OMPUTE_MODEL},compute_${CUDA_ COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
endif ( )
endif ( )
endif ( )
@ -195,7 +195,7 @@ list(REMOVE_ITEM sources
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . c
)
if ( ENABLE_CUDA )
if ( CMAKE_CUDA_COMPILER )
file ( GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu" )
endif ( )
@ -215,7 +215,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 ( ENABLE_CUDA )
if ( CMAKE_CUDA_COMPILER )
set_target_properties ( darklib PROPERTIES CUDA_SEPARABLE_COMPILATION ON )
endif ( )
target_compile_definitions ( darklib PRIVATE LIB_EXPORTS=1 )
@ -264,7 +264,7 @@ endif()
target_link_libraries ( darknet Threads::Threads )
target_link_libraries ( darklib Threads::Threads )
if ( ENABLE_CUDA )
if ( CMAKE_CUDA_COMPILER )
target_link_libraries ( darknet curand cublas )
target_link_libraries ( darklib curand cublas )
endif ( )