mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Fix building with -DENABLE_CUDA=ON
This commit is contained in:
		| @@ -2693,6 +2693,7 @@ if(ENABLE_CUDA) | |||||||
|             PURPOSE "Used in some processing block implementations." |             PURPOSE "Used in some processing block implementations." | ||||||
|             TYPE REQUIRED |             TYPE REQUIRED | ||||||
|         ) |         ) | ||||||
|  |         set(CMAKE_CUDA_STANDARD 14) | ||||||
|         if(NOT CUDA_FOUND) |         if(NOT CUDA_FOUND) | ||||||
|             set(ENABLE_CUDA OFF) |             set(ENABLE_CUDA OFF) | ||||||
|         endif() |         endif() | ||||||
| @@ -2991,8 +2992,10 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) | |||||||
|         add_compile_options(-Wno-missing-field-initializers) |         add_compile_options(-Wno-missing-field-initializers) | ||||||
|     endif() |     endif() | ||||||
|     if(CMAKE_CROSSCOMPILING OR NOT ENABLE_PACKAGING) |     if(CMAKE_CROSSCOMPILING OR NOT ENABLE_PACKAGING) | ||||||
|  |         if(NOT ENABLE_CUDA) | ||||||
|             add_compile_options(-Wno-psabi) |             add_compile_options(-Wno-psabi) | ||||||
|         endif() |         endif() | ||||||
|  |     endif() | ||||||
|     if(IS_ARM) |     if(IS_ARM) | ||||||
|         if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.1.0") AND (CMAKE_VERSION VERSION_GREATER "3.1")) |         if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.1.0") AND (CMAKE_VERSION VERSION_GREATER "3.1")) | ||||||
|             if(CMAKE_CXX_STANDARD VERSION_LESS 17) |             if(CMAKE_CXX_STANDARD VERSION_LESS 17) | ||||||
| @@ -3025,10 +3028,12 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) | |||||||
|                 add_compile_options(-mtune=native) |                 add_compile_options(-mtune=native) | ||||||
|             endif() |             endif() | ||||||
|         else() |         else() | ||||||
|  |             if(NOT ENABLE_CUDA) | ||||||
|                 add_compile_options(-march=native) |                 add_compile_options(-march=native) | ||||||
|             endif() |             endif() | ||||||
|         endif() |         endif() | ||||||
|     endif() |     endif() | ||||||
|  | endif() | ||||||
| if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") | if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||||||
|     if(NOT ENABLE_GENERIC_ARCH) |     if(NOT ENABLE_GENERIC_ARCH) | ||||||
|         if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") |         if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | ||||||
|   | |||||||
| @@ -31,6 +31,7 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc | |||||||
| - Replaced `git://` by `https://` as the used protocol when downloading Gflags, | - Replaced `git://` by `https://` as the used protocol when downloading Gflags, | ||||||
|   so it can work through firewalls requiring authentication. |   so it can work through firewalls requiring authentication. | ||||||
| - Fixed static linking of the matio library when downloaded and built by CMake. | - Fixed static linking of the matio library when downloaded and built by CMake. | ||||||
|  | - Fix building with `-DENABLE_CUDA=ON` for blocks implemented with CUDA. | ||||||
|  |  | ||||||
| ### Improvements in Usability: | ### Improvements in Usability: | ||||||
|  |  | ||||||
|   | |||||||
| @@ -107,14 +107,22 @@ target_include_directories(tracking_adapters | |||||||
|         ${CMAKE_SOURCE_DIR}/src/core/interfaces |         ${CMAKE_SOURCE_DIR}/src/core/interfaces | ||||||
| ) | ) | ||||||
|  |  | ||||||
| if(ENABLE_CUDA AND NOT CMAKE_VERSION VERSION_GREATER 3.11) | if(ENABLE_CUDA) | ||||||
|  |     if(CMAKE_VERSION VERSION_GREATER 3.11) | ||||||
|  |         target_include_directories(tracking_adapters | ||||||
|  |             PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} | ||||||
|  |         ) | ||||||
|  |     else() | ||||||
|         target_link_libraries(tracking_adapters |         target_link_libraries(tracking_adapters | ||||||
|         PUBLIC |             PUBLIC ${CUDA_LIBRARIES} | ||||||
|             ${CUDA_LIBRARIES} |  | ||||||
|         ) |         ) | ||||||
|         target_include_directories(tracking_adapters |         target_include_directories(tracking_adapters | ||||||
|         PUBLIC |             PUBLIC ${CUDA_INCLUDE_DIRS} | ||||||
|             ${CUDA_INCLUDE_DIRS} |         ) | ||||||
|  |     endif() | ||||||
|  |     set_target_properties(tracking_adapters PROPERTIES | ||||||
|  |         CUDA_SEPARABLE_COMPILATION ON | ||||||
|  |         POSITION_INDEPENDENT_CODE ON | ||||||
|     ) |     ) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -103,14 +103,22 @@ if(GNURADIO_USES_STD_POINTERS) | |||||||
|     ) |     ) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| if(ENABLE_CUDA AND NOT CMAKE_VERSION VERSION_GREATER 3.11) | if(ENABLE_CUDA) | ||||||
|  |     if(CMAKE_VERSION VERSION_GREATER 3.11) | ||||||
|  |         target_include_directories(tracking_gr_blocks | ||||||
|  |             PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} | ||||||
|  |         ) | ||||||
|  |     else() | ||||||
|         target_link_libraries(tracking_gr_blocks |         target_link_libraries(tracking_gr_blocks | ||||||
|         PUBLIC |             PUBLIC cuda_correlator_lib | ||||||
|             ${CUDA_LIBRARIES} |  | ||||||
|         ) |         ) | ||||||
|         target_include_directories(tracking_gr_blocks |         target_include_directories(tracking_gr_blocks | ||||||
|         PUBLIC |             PUBLIC ${CUDA_INCLUDE_DIRS} | ||||||
|             ${CUDA_INCLUDE_DIRS} |         ) | ||||||
|  |     endif() | ||||||
|  |     set_target_properties(tracking_gr_blocks PROPERTIES | ||||||
|  |         CUDA_SEPARABLE_COMPILATION ON | ||||||
|  |         POSITION_INDEPENDENT_CODE ON | ||||||
|     ) |     ) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -177,7 +177,7 @@ void Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::start_tracking() | |||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     const double T_chip_mod_seconds = 1 / d_code_freq_chips; |     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; |     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<double>(d_fs_in); |     const double T_prn_mod_samples = T_prn_mod_seconds * static_cast<double>(d_fs_in); | ||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ typedef std::shared_ptr<Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc> | |||||||
| #else | #else | ||||||
| typedef boost::shared_ptr<Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc> | typedef boost::shared_ptr<Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc> | ||||||
|     gps_l1_ca_dll_pll_tracking_gpu_cc_sptr; |     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_tracking_gpu_cc_sptr | ||||||
| gps_l1_ca_dll_pll_make_tracking_gpu_cc( | gps_l1_ca_dll_pll_make_tracking_gpu_cc( | ||||||
|   | |||||||
| @@ -42,8 +42,6 @@ set(TRACKING_LIB_HEADERS | |||||||
|     exponential_smoother.h |     exponential_smoother.h | ||||||
| ) | ) | ||||||
|  |  | ||||||
| set(OPT_TRACKING_LIBRARIES "") |  | ||||||
| set(OPT_TRACKING_INCLUDES "") |  | ||||||
| if(ENABLE_CUDA) | if(ENABLE_CUDA) | ||||||
|     if(CMAKE_VERSION VERSION_GREATER 3.11) |     if(CMAKE_VERSION VERSION_GREATER 3.11) | ||||||
|         set(TRACKING_LIB_SOURCES ${TRACKING_LIB_SOURCES} cuda_multicorrelator.cu) |         set(TRACKING_LIB_SOURCES ${TRACKING_LIB_SOURCES} cuda_multicorrelator.cu) | ||||||
| @@ -53,9 +51,7 @@ if(ENABLE_CUDA) | |||||||
|         set(CUDA_PROPAGATE_HOST_FLAGS OFF) |         set(CUDA_PROPAGATE_HOST_FLAGS OFF) | ||||||
|         cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR}) |         cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR}) | ||||||
|         set(LIB_TYPE STATIC) #set the lib type |         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 ${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}) |  | ||||||
|     endif() |     endif() | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| @@ -94,20 +90,27 @@ target_link_libraries(tracking_libs | |||||||
|         Volkgnsssdr::volkgnsssdr |         Volkgnsssdr::volkgnsssdr | ||||||
|         core_system_parameters |         core_system_parameters | ||||||
|         algorithms_libs |         algorithms_libs | ||||||
|         ${OPT_TRACKING_LIBRARIES} |  | ||||||
|     PRIVATE |     PRIVATE | ||||||
|         gnss_sdr_flags |         gnss_sdr_flags | ||||||
|         Glog::glog |         Glog::glog | ||||||
| ) | ) | ||||||
|  |  | ||||||
| if(NOT CMAKE_VERSION VERSION_GREATER 3.11) | 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 |         target_link_libraries(tracking_libs | ||||||
|         PUBLIC |             PUBLIC ${CUDA_LIBRARIES} | ||||||
|             ${OPT_TRACKING_LIBRARIES} |  | ||||||
|         ) |         ) | ||||||
|         target_include_directories(tracking_libs |         target_include_directories(tracking_libs | ||||||
|         PUBLIC |             PUBLIC ${CUDA_INCLUDE_DIRS} | ||||||
|             ${OPT_TRACKING_INCLUDES} |         ) | ||||||
|  |     endif() | ||||||
|  |     set_target_properties(tracking_libs PROPERTIES | ||||||
|  |         CUDA_SEPARABLE_COMPILATION ON | ||||||
|  |         POSITION_INDEPENDENT_CODE ON | ||||||
|     ) |     ) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -120,9 +120,22 @@ else() | |||||||
| endif() | endif() | ||||||
|  |  | ||||||
| if(ENABLE_CUDA) | if(ENABLE_CUDA) | ||||||
|     if(NOT CMAKE_VERSION VERSION_GREATER 3.11) |     if(CMAKE_VERSION VERSION_GREATER 3.11) | ||||||
|         target_include_directories(core_receiver PUBLIC ${CUDA_INCLUDE_DIRS}) |         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() |     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) |     target_compile_definitions(core_receiver PRIVATE -DCUDA_GPU_ACCEL=1) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,16 +39,22 @@ target_link_libraries(gnss-sdr | |||||||
| target_compile_definitions(gnss-sdr PRIVATE -DGNSS_SDR_VERSION="${VERSION}") | target_compile_definitions(gnss-sdr PRIVATE -DGNSS_SDR_VERSION="${VERSION}") | ||||||
|  |  | ||||||
| if(ENABLE_CUDA) | 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 |         target_link_libraries(gnss-sdr | ||||||
|             PRIVATE |             PUBLIC ${CUDA_LIBRARIES} | ||||||
|                 ${CUDA_LIBRARIES} |  | ||||||
|         ) |         ) | ||||||
|         target_include_directories(gnss-sdr |         target_include_directories(gnss-sdr | ||||||
|             PRIVATE |             PUBLIC ${CUDA_INCLUDE_DIRS} | ||||||
|                 ${CUDA_INCLUDE_DIRS} |  | ||||||
|         ) |         ) | ||||||
|     endif() |     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) |     target_compile_definitions(gnss-sdr PRIVATE -DCUDA_GPU_ACCEL=1) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez