Improve CUDA handling

Set CMAKE_CUDA_STANDARD to 14, allowing decay to 11 for CUDA 8
CUDA version reported in CMake summary
Add target property CUDA_RESOLVE_DEVICE_SYMBOLS to ON
This commit is contained in:
Carles Fernandez 2020-08-28 12:02:01 +02:00
parent 7fa7c03fd0
commit df2f84dfb0
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
2 changed files with 18 additions and 12 deletions

View File

@ -2672,16 +2672,14 @@ if(DEFINED ENV{CUDA_GPU_ACCEL})
endif()
if(ENABLE_CUDA)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_EXTENSIONS ON)
if(CMAKE_VERSION VERSION_GREATER 3.11)
include(CheckLanguage)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
enable_language(CUDA)
set(CUDA_FOUND TRUE)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()
else()
set(ENABLE_CUDA OFF)
endif()
@ -2689,12 +2687,19 @@ if(ENABLE_CUDA)
find_package(CUDA REQUIRED)
set_package_properties(CUDA PROPERTIES
URL "https://developer.nvidia.com/cuda-downloads"
DESCRIPTION "Library for parallel programming in Nvidia GPUs"
PURPOSE "Used in some processing block implementations."
TYPE REQUIRED
)
set(CMAKE_CUDA_STANDARD 14)
if(NOT CUDA_FOUND)
if(CUDA_FOUND)
set_package_properties(CUDA PROPERTIES
DESCRIPTION "Library for parallel programming in Nvidia GPUs (found: v${CUDA_VERSION_STRING})"
)
set(CMAKE_CUDA_COMPILER_ID "NVIDIA") # only for reporting purposes
set(CMAKE_CUDA_COMPILER_VERSION ${CUDA_VERSION_STRING}) # only for reporting purposes
else()
set_package_properties(CUDA PROPERTIES
DESCRIPTION "Library for parallel programming in Nvidia GPUs"
)
set(ENABLE_CUDA OFF)
endif()
endif()
@ -2704,7 +2709,6 @@ if(ENABLE_CUDA)
message(STATUS " You can disable it with 'cmake -DENABLE_CUDA=OFF ..'")
else()
message(STATUS "NVIDIA CUDA GPU Acceleration will be not enabled.")
message(STATUS " Enable it with 'cmake -DENABLE_CUDA=ON ..' to add support for GPU-based acceleration using CUDA.")
endif()
@ -3156,6 +3160,9 @@ endif()
message(STATUS "CMake version: ${CMAKE_VERSION}")
message(STATUS "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}. Standard: C++${CMAKE_CXX_STANDARD}.")
message(STATUS "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}. Standard: C${CMAKE_C_STANDARD}.")
if(CUDA_FOUND)
message(STATUS "The CUDA compiler identification is ${CMAKE_CUDA_COMPILER_ID} ${CMAKE_CUDA_COMPILER_VERSION}. Standard: C++${CMAKE_CUDA_STANDARD}.")
endif()
message(STATUS "")
file(REMOVE ${CMAKE_BINARY_DIR}/features.log)
file(WRITE ${CMAKE_BINARY_DIR}/features.log "**********************************\n")

View File

@ -43,15 +43,13 @@ set(TRACKING_LIB_HEADERS
)
if(ENABLE_CUDA)
list(APPEND CUDA_NVCC_FLAGS "-gencode arch=compute_30,code=sm_30; -O3; -use_fast_math -default-stream per-thread")
if(CMAKE_VERSION VERSION_GREATER 3.11)
set(TRACKING_LIB_SOURCES ${TRACKING_LIB_SOURCES} cuda_multicorrelator.cu)
set(TRACKING_LIB_HEADERS ${TRACKING_LIB_HEADERS} cuda_multicorrelator.h)
else()
list(APPEND CUDA_NVCC_FLAGS "-gencode arch=compute_30,code=sm_30; -std=c++11;-O3; -use_fast_math -default-stream per-thread")
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(LIB_TYPE STATIC) #set the lib type
cuda_add_library(cuda_correlator_lib ${LIB_TYPE} cuda_multicorrelator.h cuda_multicorrelator.cu)
cuda_add_library(cuda_correlator_lib STATIC cuda_multicorrelator.h cuda_multicorrelator.cu)
endif()
endif()
@ -111,6 +109,7 @@ if(ENABLE_CUDA)
set_target_properties(tracking_libs PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
POSITION_INDEPENDENT_CODE ON
CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
endif()