From 429e4e8776723b30d583b99ff491d155ed09898c Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 25 Aug 2015 17:07:36 +0200 Subject: [PATCH] Fixing compilation when CUDA is not present --- CMakeLists.txt | 3 +- .../tracking/adapters/CMakeLists.txt | 6 ++-- .../tracking/gnuradio_blocks/CMakeLists.txt | 14 +++++---- src/algorithms/tracking/libs/CMakeLists.txt | 30 +++++++++---------- src/core/receiver/CMakeLists.txt | 11 +++---- src/core/receiver/gnss_block_factory.cc | 5 +++- src/main/CMakeLists.txt | 8 ++--- 7 files changed, 41 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f509c1da..5e8affcf7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -961,11 +961,12 @@ if($ENV{CUDA_GPU_ACCEL}) endif($ENV{CUDA_GPU_ACCEL}) if(ENABLE_CUDA) + FIND_PACKAGE(CUDA REQUIRED) message(STATUS "NVIDIA CUDA GPU Acceleration will be enabled." ) message(STATUS "You can disable it with 'cmake -DENABLE_CUDA=OFF ../'" ) else(ENABLE_CUDA) message(STATUS "NVIDIA CUDA GPU Acceleration will is not enabled." ) - message(STATUS "Enable it with 'cmake -DENABLE_CUDA=ON ../' to add support for the Teleorbit Flexiband front-end." ) + message(STATUS "Enable it with 'cmake -DENABLE_CUDA=ON ../' to add support for GPU-based acceleration using CUDA." ) endif(ENABLE_CUDA) diff --git a/src/algorithms/tracking/adapters/CMakeLists.txt b/src/algorithms/tracking/adapters/CMakeLists.txt index c712cd981..55029b019 100644 --- a/src/algorithms/tracking/adapters/CMakeLists.txt +++ b/src/algorithms/tracking/adapters/CMakeLists.txt @@ -17,8 +17,8 @@ # if(ENABLE_CUDA) - FIND_PACKAGE(CUDA REQUIRED) - set(OPT_TRACKING_ADAPTERS ${OPT_TRACKING_ADAPTERS} gps_l1_ca_dll_pll_tracking_gpu.cc) + set(OPT_TRACKING_ADAPTERS ${OPT_TRACKING_ADAPTERS} gps_l1_ca_dll_pll_tracking_gpu.cc) + set(OPT_TRACKING_INCLUDE_DIRS ${OPT_TRACKING_INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS}) endif(ENABLE_CUDA) set(TRACKING_ADAPTER_SOURCES @@ -45,7 +45,7 @@ include_directories( ${GLOG_INCLUDE_DIRS} ${GFlags_INCLUDE_DIRS} ${GNURADIO_RUNTIME_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} + ${OPT_TRACKING_INCLUDE_DIRS} ) file(GLOB TRACKING_ADAPTER_HEADERS "*.h") diff --git a/src/algorithms/tracking/gnuradio_blocks/CMakeLists.txt b/src/algorithms/tracking/gnuradio_blocks/CMakeLists.txt index a018fe10e..8bfeb301e 100644 --- a/src/algorithms/tracking/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/tracking/gnuradio_blocks/CMakeLists.txt @@ -18,8 +18,10 @@ if(ENABLE_CUDA) - FIND_PACKAGE(CUDA REQUIRED) - set(OPT_TRACKING_BLOCKS ${OPT_TRACKING_BLOCKS} gps_l1_ca_dll_pll_tracking_gpu_cc.cc) + set(OPT_TRACKING_BLOCKS ${OPT_TRACKING_BLOCKS} gps_l1_ca_dll_pll_tracking_gpu_cc.cc) + set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS} + ${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs/cudahelpers) + set(OPT_TRACKING_LIBRARIES ${OPT_TRACKING_LIBRARIES} ${CUDA_LIBRARIES}) endif(ENABLE_CUDA) set(TRACKING_GR_BLOCKS_SOURCES @@ -32,7 +34,7 @@ set(TRACKING_GR_BLOCKS_SOURCES gps_l1_ca_tcp_connector_tracking_cc.cc galileo_e5a_dll_pll_tracking_cc.cc gps_l2_m_dll_pll_tracking_cc.cc - ${OPT_TRACKING_BLOCKS} + ${OPT_TRACKING_BLOCKS} ) include_directories( @@ -47,8 +49,7 @@ include_directories( ${Boost_INCLUDE_DIRS} ${GNURADIO_RUNTIME_INCLUDE_DIRS} ${VOLK_GNSSSDR_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs/cudahelpers + ${OPT_TRACKING_INCLUDES} ) if(ENABLE_GENERIC_ARCH) @@ -59,7 +60,8 @@ file(GLOB TRACKING_GR_BLOCKS_HEADERS "*.h") add_library(tracking_gr_blocks ${TRACKING_GR_BLOCKS_SOURCES} ${TRACKING_GR_BLOCKS_HEADERS}) source_group(Headers FILES ${TRACKING_GR_BLOCKS_HEADERS}) -target_link_libraries(tracking_gr_blocks tracking_lib ${GNURADIO_RUNTIME_LIBRARIES} gnss_sp_libs ${Boost_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES} ${CUDA_LIBRARIES}) +target_link_libraries(tracking_gr_blocks tracking_lib ${GNURADIO_RUNTIME_LIBRARIES} gnss_sp_libs ${Boost_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES} ${OPT_TRACKING_LIBRARIES}) + if(NOT VOLK_GNSSSDR_FOUND) add_dependencies(tracking_gr_blocks volk_gnsssdr_module) endif(NOT VOLK_GNSSSDR_FOUND) diff --git a/src/algorithms/tracking/libs/CMakeLists.txt b/src/algorithms/tracking/libs/CMakeLists.txt index e6f66fa68..493aa28db 100644 --- a/src/algorithms/tracking/libs/CMakeLists.txt +++ b/src/algorithms/tracking/libs/CMakeLists.txt @@ -18,21 +18,19 @@ if(ENABLE_CUDA) - FIND_PACKAGE(CUDA REQUIRED) - - # Append current NVCC flags by something, eg comput capability - # set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --gpu-architecture sm_30) - - 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} - ${CMAKE_CURRENT_SOURCE_DIR}/cudahelpers - ) + # Append current NVCC flags by something, eg comput capability + # set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --gpu-architecture sm_30) + 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} + ${CMAKE_CURRENT_SOURCE_DIR}/cudahelpers + ) - SET(LIB_TYPE STATIC) #set the lib type - CUDA_ADD_LIBRARY(CUDA_CORRELATOR_LIB ${LIB_TYPE} cuda_multicorrelator.h cuda_multicorrelator.cu) + 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}) endif(ENABLE_CUDA) @@ -53,7 +51,7 @@ include_directories( ${CMAKE_SOURCE_DIR}/src/core/interfaces ${CMAKE_SOURCE_DIR}/src/core/receiver ${VOLK_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} + ${OPT_TRACKING_INCLUDES} ) if(ENABLE_GENERIC_ARCH) @@ -68,4 +66,4 @@ endif(SSE3_AVAILABLE) file(GLOB TRACKING_LIB_HEADERS "*.h") add_library(tracking_lib ${TRACKING_LIB_SOURCES} ${TRACKING_LIB_HEADERS}) source_group(Headers FILES ${TRACKING_LIB_HEADERS}) -target_link_libraries(tracking_lib CUDA_CORRELATOR_LIB ${VOLK_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES}) \ No newline at end of file +target_link_libraries(tracking_lib ${OPT_TRACKING_LIBRARIES} ${VOLK_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES}) diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt index e34b0ad1d..295621793 100644 --- a/src/core/receiver/CMakeLists.txt +++ b/src/core/receiver/CMakeLists.txt @@ -16,10 +16,6 @@ # along with GNSS-SDR. If not, see . # -if(ENABLE_CUDA) - FIND_PACKAGE(CUDA REQUIRED) - add_definitions(-DCUDA_GPU_ACCEL=1) -endif(ENABLE_CUDA) set(GNSS_RECEIVER_SOURCES control_thread.cc @@ -35,6 +31,11 @@ if(PC_GNURADIO_RUNTIME_VERSION VERSION_GREATER 3.7.3) add_definitions(-DMODERN_GNURADIO=1) endif(PC_GNURADIO_RUNTIME_VERSION VERSION_GREATER 3.7.3) +if(ENABLE_CUDA) + add_definitions(-DCUDA_GPU_ACCEL=1) + set(OPT_RECEIVER_INCLUDE_DIRS ${OPT_RECEIVER_INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS}) +endif(ENABLE_CUDA) + include_directories( $(CMAKE_CURRENT_SOURCE_DIR) @@ -75,7 +76,7 @@ include_directories( ${GFlags_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${GNURADIO_RUNTIME_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} + ${OPT_RECEIVER_INCLUDE_DIRS} ) if(Boost_VERSION LESS 105000) diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 28cba1ed5..9be54b8ba 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -77,7 +77,6 @@ #include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" #include "gps_l1_ca_dll_pll_tracking.h" -#include "gps_l1_ca_dll_pll_tracking_gpu.h" #include "gps_l1_ca_dll_pll_optim_tracking.h" #include "gps_l1_ca_dll_fll_pll_tracking.h" #include "gps_l1_ca_tcp_connector_tracking.h" @@ -123,6 +122,10 @@ #include "flexiband_signal_source.h" #endif +#if CUDA_GPU_ACCEL +#include "gps_l1_ca_dll_pll_tracking_gpu.h" +#endif + using google::LogMessage; diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index 4fbafb1fb..6b139b97d 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -34,8 +34,9 @@ if(ENABLE_UHD) endif(ENABLE_UHD) if(ENABLE_CUDA) - FIND_PACKAGE(CUDA REQUIRED) add_definitions(-DCUDA_GPU_ACCEL=1) + set(GNSS_SDR_OPTIONAL_LIBS ${GNSS_SDR_OPTIONAL_LIBS} ${CUDA_LIBRARIES}) + set(GNSS_SDR_OPTIONAL_HEADERS ${GNSS_SDR_OPTIONAL_HEADERS} ${CUDA_INCLUDE_DIRS}) endif(ENABLE_CUDA) @@ -54,7 +55,7 @@ include_directories( ${GNURADIO_RUNTIME_INCLUDE_DIRS} ${GNSS_SDR_OPTIONAL_HEADERS} ${VOLK_GNSSSDR_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} + ${OPT_GNSSSDR_INCLUDE_DIRS} ) add_definitions( -DGNSS_SDR_VERSION="${VERSION}" ) @@ -86,7 +87,6 @@ target_link_libraries(gnss-sdr ${MAC_LIBRARIES} ${GNSS_SDR_OPTIONAL_LIBS} gnss_sp_libs gnss_rx - ${CUDA_LIBRARIES} ) @@ -126,4 +126,4 @@ if(NOT GZIP_NOTFOUND) install(FILES ${CMAKE_BINARY_DIR}/volk_gnsssdr_profile.1.gz DESTINATION share/man/man1) endif(NOT VOLK_GNSSSDR_FOUND) -endif(NOT GZIP_NOTFOUND) \ No newline at end of file +endif(NOT GZIP_NOTFOUND)