diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a7621b8f..f67327280 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2693,6 +2693,7 @@ if(ENABLE_CUDA) PURPOSE "Used in some processing block implementations." TYPE REQUIRED ) + set(CMAKE_CUDA_STANDARD 14) if(NOT CUDA_FOUND) set(ENABLE_CUDA OFF) endif() @@ -2991,7 +2992,9 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) add_compile_options(-Wno-missing-field-initializers) endif() if(CMAKE_CROSSCOMPILING OR NOT ENABLE_PACKAGING) - add_compile_options(-Wno-psabi) + if(NOT ENABLE_CUDA) + add_compile_options(-Wno-psabi) + endif() endif() if(IS_ARM) if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.1.0") AND (CMAKE_VERSION VERSION_GREATER "3.1")) @@ -3025,7 +3028,9 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) add_compile_options(-mtune=native) endif() else() - add_compile_options(-march=native) + if(NOT ENABLE_CUDA) + add_compile_options(-march=native) + endif() endif() endif() endif() diff --git a/docs/changelog.md b/docs/changelog.md index f2a2492ca..5a962c839 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -31,6 +31,7 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades (d_code_freq_chips) / static_cast(d_fs_in); const double T_chip_mod_seconds = 1 / d_code_freq_chips; const double T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; - T_prn_mod_samples T_prn_mod_samples = T_prn_mod_seconds * static_cast(d_fs_in); + const double T_prn_mod_samples = T_prn_mod_seconds * static_cast(d_fs_in); d_correlation_length_samples = round(T_prn_mod_samples); diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.h index 840af4e42..bdb9b2925 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.h @@ -48,7 +48,7 @@ typedef std::shared_ptr #else typedef boost::shared_ptr gps_l1_ca_dll_pll_tracking_gpu_cc_sptr; -#end +#endif gps_l1_ca_dll_pll_tracking_gpu_cc_sptr gps_l1_ca_dll_pll_make_tracking_gpu_cc( diff --git a/src/algorithms/tracking/libs/CMakeLists.txt b/src/algorithms/tracking/libs/CMakeLists.txt index 246ce4d42..c6b90244e 100644 --- a/src/algorithms/tracking/libs/CMakeLists.txt +++ b/src/algorithms/tracking/libs/CMakeLists.txt @@ -42,8 +42,6 @@ set(TRACKING_LIB_HEADERS exponential_smoother.h ) -set(OPT_TRACKING_LIBRARIES "") -set(OPT_TRACKING_INCLUDES "") if(ENABLE_CUDA) if(CMAKE_VERSION VERSION_GREATER 3.11) set(TRACKING_LIB_SOURCES ${TRACKING_LIB_SOURCES} cuda_multicorrelator.cu) @@ -53,9 +51,7 @@ if(ENABLE_CUDA) 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) - set(OPT_TRACKING_LIBRARIES ${OPT_TRACKING_LIBRARIES} CUDA_CORRELATOR_LIB) - set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS}) + cuda_add_library(cuda_correlator_lib ${LIB_TYPE} cuda_multicorrelator.h cuda_multicorrelator.cu) endif() endif() @@ -94,20 +90,27 @@ target_link_libraries(tracking_libs Volkgnsssdr::volkgnsssdr core_system_parameters algorithms_libs - ${OPT_TRACKING_LIBRARIES} PRIVATE gnss_sdr_flags Glog::glog ) -if(NOT CMAKE_VERSION VERSION_GREATER 3.11) - target_link_libraries(tracking_libs - PUBLIC - ${OPT_TRACKING_LIBRARIES} - ) - target_include_directories(tracking_libs - PUBLIC - ${OPT_TRACKING_INCLUDES} +if(ENABLE_CUDA) + if(CMAKE_VERSION VERSION_GREATER 3.11) + target_include_directories(tracking_libs + PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} + ) + else() + target_link_libraries(tracking_libs + PUBLIC ${CUDA_LIBRARIES} + ) + target_include_directories(tracking_libs + PUBLIC ${CUDA_INCLUDE_DIRS} + ) + endif() + set_target_properties(tracking_libs PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + POSITION_INDEPENDENT_CODE ON ) endif() diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt index 35384ff95..8cadf9c12 100644 --- a/src/core/receiver/CMakeLists.txt +++ b/src/core/receiver/CMakeLists.txt @@ -120,9 +120,22 @@ else() endif() if(ENABLE_CUDA) - if(NOT CMAKE_VERSION VERSION_GREATER 3.11) - target_include_directories(core_receiver PUBLIC ${CUDA_INCLUDE_DIRS}) + if(CMAKE_VERSION VERSION_GREATER 3.11) + target_include_directories(core_receiver + PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} + ) + else() + target_link_libraries(core_receiver + PUBLIC ${CUDA_LIBRARIES} + ) + target_include_directories(core_receiver + PUBLIC ${CUDA_INCLUDE_DIRS} + ) endif() + set_target_properties(core_receiver PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + POSITION_INDEPENDENT_CODE ON + ) target_compile_definitions(core_receiver PRIVATE -DCUDA_GPU_ACCEL=1) endif() diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index cbbbf1466..d9d3d835b 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -39,16 +39,22 @@ target_link_libraries(gnss-sdr target_compile_definitions(gnss-sdr PRIVATE -DGNSS_SDR_VERSION="${VERSION}") if(ENABLE_CUDA) - if(NOT CMAKE_VERSION VERSION_GREATER 3.11) + if(CMAKE_VERSION VERSION_GREATER 3.11) + target_include_directories(gnss-sdr + PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} + ) + else() target_link_libraries(gnss-sdr - PRIVATE - ${CUDA_LIBRARIES} + PUBLIC ${CUDA_LIBRARIES} ) target_include_directories(gnss-sdr - PRIVATE - ${CUDA_INCLUDE_DIRS} + PUBLIC ${CUDA_INCLUDE_DIRS} ) endif() + set_target_properties(gnss-sdr PROPERTIES + CUDA_SEPARABLE_COMPILATION ON + POSITION_INDEPENDENT_CODE ON + ) target_compile_definitions(gnss-sdr PRIVATE -DCUDA_GPU_ACCEL=1) endif()