diff --git a/CMakeLists.txt b/CMakeLists.txt index 38a521d0..3565e430 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ # To use your libs, launch cmake with -DUSE_INTEGRATED_LIBS:BOOL=FALSE -# To enable CUDA, launch cmake with -DENABLE_CUDA. Also it is advisable to set the highest compute model with -DCOMPUTE_MODEL=..., depending on your specific card capabilities. If CUDA is not required, this setting is completely ignored. 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) # do not enable after searching for OpenCV package! + +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") #Compute capability for Tesla T4, RTX 2080 -set(COMPUTE_MODEL_72 "72") #Compute capability for Jetson Xavier -set(COMPUTE_MODEL_70 "70") #Compute capability for Tesla V100 -set(COMPUTE_MODEL_62 "62") #Compute capability for Jetson TX2 -set(COMPUTE_MODEL_61 "61") #Compute capability for Tesla P40 -set(COMPUTE_MODEL_60 "60") #Compute capability for Tesla P100 -set(COMPUTE_MODEL_53 "53") #Compute capability for Jetson TX1 -set(COMPUTE_MODEL_52 "52") #Compute capability for Tesla M40/M60 -set(COMPUTE_MODEL_37 "37") #Compute capability for Tesla K80 -set(COMPUTE_MODEL_35 "35") #Compute capability for Tesla K20/K40 -set(COMPUTE_MODEL_30 "30") #Compute capability for Tesla K10, Quadro K4000 - -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_COMPUTE_MODEL_75 "75") #Compute capability for Tesla T4, RTX 2080 +set(CUDA_COMPUTE_MODEL_72 "72") #Compute capability for Jetson Xavier +set(CUDA_COMPUTE_MODEL_70 "70") #Compute capability for Tesla V100 +set(CUDA_COMPUTE_MODEL_62 "62") #Compute capability for Jetson TX2 +set(CUDA_COMPUTE_MODEL_61 "61") #Compute capability for Tesla P40 +set(CUDA_COMPUTE_MODEL_60 "60") #Compute capability for Tesla P100 +set(CUDA_COMPUTE_MODEL_53 "53") #Compute capability for Jetson TX1 +set(CUDA_COMPUTE_MODEL_52 "52") #Compute capability for Tesla M40/M60 +set(CUDA_COMPUTE_MODEL_37 "37") #Compute capability for Tesla K80 +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) + 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) - 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_COMPUTE_MODEL PROPERTY STRINGS ${CUDA_COMPUTE_MODEL_75} ${CUDA_COMPUTE_MODEL_72} ${CUDA_COMPUTE_MODEL_70} ${CUDA_COMPUTE_MODEL_62} ${CUDA_COMPUTE_MODEL_61} ${CUDA_COMPUTE_MODEL_60} ${CUDA_COMPUTE_MODEL_53} ${CUDA_COMPUTE_MODEL_52} ${CUDA_COMPUTE_MODEL_37} ${CUDA_COMPUTE_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_COMPUTE_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_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_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 ${CMAKE_CURRENT_LIST_DIR}/src/getopt.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() diff --git a/CMakeSettings.json b/CMakeSettings.json index 585d6851..968e68ba 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -6,7 +6,7 @@ "cmakeCommandArgs": "", "configurationType": "Release", "generator": "Visual Studio 15 2017 Win64", - "name": "x64-Release CPU - int. libs", + "name": "x64-Release-int-libs", "variables": [ { "name": "USE_INTEGRATED_LIBS", @@ -20,7 +20,7 @@ "cmakeCommandArgs": "", "configurationType": "Debug", "generator": "Visual Studio 15 2017 Win64", - "name": "x64-Debug CPU", + "name": "x64-Debug", "variables": [ { "name": "CMAKE_TOOLCHAIN_FILE", @@ -42,7 +42,7 @@ "cmakeCommandArgs": "", "configurationType": "Release", "generator": "Visual Studio 15 2017 Win64", - "name": "x64-Release CPU", + "name": "x64-Release", "variables": [ { "name": "CMAKE_TOOLCHAIN_FILE", @@ -57,58 +57,6 @@ "value": "${env.VCPKG_DEFAULT_TRIPLET}" } ] - }, - { - "buildCommandArgs": "-m -v:minimal", - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "", - "configurationType": "Debug", - "generator": "Visual Studio 15 2017 Win64", - "name": "x64-Debug GPU", - "variables": [ - { - "name": "CMAKE_TOOLCHAIN_FILE", - "value": "${env.VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake" - }, - { - "name": "USE_INTEGRATED_LIBS", - "value": "FALSE" - }, - { - "name": "ENABLE_CUDA", - "value": "TRUE" - }, - { - "name": "VCPKG_TARGET_TRIPLET", - "value": "${env.VCPKG_DEFAULT_TRIPLET}" - } - ] - }, - { - "buildCommandArgs": "-m -v:minimal", - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "", - "configurationType": "Release", - "generator": "Visual Studio 15 2017 Win64", - "name": "x64-Release GPU", - "variables": [ - { - "name": "CMAKE_TOOLCHAIN_FILE", - "value": "${env.VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake" - }, - { - "name": "USE_INTEGRATED_LIBS", - "value": "FALSE" - }, - { - "name": "ENABLE_CUDA", - "value": "TRUE" - }, - { - "name": "VCPKG_TARGET_TRIPLET", - "value": "${env.VCPKG_DEFAULT_TRIPLET}" - } - ] } ] } diff --git a/build.ps1 b/build.ps1 index 1590054b..836998e1 100755 --- a/build.ps1 +++ b/build.ps1 @@ -16,36 +16,22 @@ if ((Get-Command "cl.exe" -ErrorAction SilentlyContinue) -eq $null) Write-Host "Visual Studio 2017 ${vstype} Command Prompt variables set.`n" -ForegroundColor Yellow } -# CPU ONLY, DEBUG +# DEBUG New-Item -Path .\build_win_debug -ItemType directory -Force Set-Location build_win_debug cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=$env:VCPKG_DEFAULT_TRIPLET" "-DCMAKE_BUILD_TYPE=Debug" .. cmake --build . --config Debug --parallel ${number_of_build_workers} Set-Location .. -# CPU ONLY, RELEASE +# RELEASE New-Item -Path .\build_win_release -ItemType directory -Force Set-Location build_win_release cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=$env:VCPKG_DEFAULT_TRIPLET" "-DCMAKE_BUILD_TYPE=Release" .. cmake --build . --config Release --parallel ${number_of_build_workers} Set-Location .. -# CUDA, DEBUG -New-Item -Path .\build_win_debug_cuda -ItemType directory -Force -Set-Location build_win_debug_cuda -cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DENABLE_CUDA:BOOL=TRUE" "-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=$env:VCPKG_DEFAULT_TRIPLET" "-DCMAKE_BUILD_TYPE=Debug" .. -cmake --build . --config Debug --parallel ${number_of_build_workers} -Set-Location .. - -# CUDA, RELEASE -New-Item -Path .\build_win_release_cuda -ItemType directory -Force -Set-Location build_win_release_cuda -cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DENABLE_CUDA:BOOL=TRUE" "-DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=$env:VCPKG_DEFAULT_TRIPLET" "-DCMAKE_BUILD_TYPE=Release" .. -cmake --build . --config Release --parallel ${number_of_build_workers} -Set-Location .. - -# CPU ONLY, USE LOCAL PTHREAD LIB, NO VCPKG: remember to use "vcpkg.exe integrate remove" in case you had enable user-wide vcpkg integration -New-Item -Path .\build_win_release_cuda_custom_libs -ItemType directory -Force +# USE LOCAL PTHREAD LIB, NO VCPKG: remember to use "vcpkg.exe integrate remove" in case you had enable user-wide vcpkg integration +New-Item -Path .\build_win_release_cuda_int_libs -ItemType directory -Force Set-Location build_win_release_cuda_custom_libs cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" .. cmake --build . --config Release --parallel ${number_of_build_workers} diff --git a/build.sh b/build.sh index 946d9175..444c5b24 100755 --- a/build.sh +++ b/build.sh @@ -9,7 +9,7 @@ fi rm -f uselib darknet -# CPU ONLY, DEBUG +# DEBUG mkdir -p build_debug cd build_debug cmake .. -DCMAKE_BUILD_TYPE=Debug @@ -17,26 +17,10 @@ cmake --build . --target install -- -j${number_of_build_workers} #cmake --build . --target install --parallel ${number_of_build_workers} #valid only for CMake 3.12+ cd .. -# CPU ONLY, RELEASE +# RELEASE mkdir -p build_release cd build_release cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . --target install -- -j${number_of_build_workers} #cmake --build . --target install --parallel ${number_of_build_workers} #valid only for CMake 3.12+ cd .. - -# CUDA, DEBUG -mkdir -p build_debug_gpu -cd build_debug_gpu -cmake .. -DCMAKE_BUILD_TYPE=Debug -DENABLE_CUDA:BOOL=TRUE -cmake --build . --target install -- -j${number_of_build_workers} -#cmake --build . --target install --parallel ${number_of_build_workers} #valid only for CMake 3.12+ -cd .. - -# CUDA, RELEASE -mkdir -p build_release_gpu -cd build_release_gpu -cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_CUDA:BOOL=TRUE -cmake --build . --target install -- -j${number_of_build_workers} -#cmake --build . --target install --parallel ${number_of_build_workers} #valid only for CMake 3.12+ -cd .. diff --git a/cmake/Modules/FindCUDNN.cmake b/cmake/Modules/FindCUDNN.cmake index c5f28c53..6e53311a 100644 --- a/cmake/Modules/FindCUDNN.cmake +++ b/cmake/Modules/FindCUDNN.cmake @@ -19,26 +19,18 @@ # ``CUDNN_LIBRARIES`` # The CUDNN libraries. # -# Hints -# ^^^^^ -# -# ``CUDNN_ROOT_DIR`` -# Set this variable to a directory that contains a CUDNN installation. -# include(FindPackageHandleStandardArgs) -#set(CUDNN_ROOT_DIR "" CACHE PATH "Folder contains NVIDIA cuDNN") - if(NOT CUDNN_INCLUDE_DIR) find_path(CUDNN_INCLUDE_DIR cudnn.h - HINTS ${CUDNN_ROOT_DIR} ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} + HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES cuda/include include) endif() if(NOT CUDNN_LIBRARY) find_library(CUDNN_LIBRARY cudnn - HINTS ${CUDNN_ROOT_DIR} ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} + HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64) endif()