diff --git a/CMakeLists.txt b/CMakeLists.txt index 3feeccb492586ef8ab55a79c3e08462bbecb986a..ae7e9b7374b02cc2561d3b03a301904d5e967f5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,12 +11,12 @@ set(DEDISP_VERSION_PATCH 1) set(DEDISP_VERSION ${DEDISP_VERSION_MAJOR}.${DEDISP_VERSION_MINOR}.${DEDISP_VERSION_PATCH} ) # cmake configuration -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.9) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # dependencies -find_package(CUDA) +find_package(CUDA REQUIRED) # set Release as default build type if(NOT CMAKE_BUILD_TYPE) @@ -31,13 +31,13 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # options ################################################################################ -option(ENABLE_BENCHMARK on) +option(ENABLE_BENCHMARK ON) if (ENABLE_BENCHMARK) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEDISP_BENCHMARK") endif() -option(ENABLE_DEBUG off) +option(ENABLE_DEBUG OFF) if (ENABLE_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEDISP_DEBUG") @@ -61,13 +61,7 @@ endif() ################################################################################ # OpenMP configuration ################################################################################ -find_package(OpenMP) - -if(OPENMP_FOUND) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") -endif() +find_package(OpenMP REQUIRED) ################################################################################ diff --git a/bin/benchmark/bench.hpp b/bin/benchmark/bench.hpp index 8258f08d9bcdba018cc848cdfd1217b9dc7fca15..3b882f2809459c056604d868dbbf6adf0ab6e48f 100644 --- a/bin/benchmark/bench.hpp +++ b/bin/benchmark/bench.hpp @@ -18,7 +18,6 @@ #include <Plan.hpp> #include "external/Stopwatch.h" -#include <omp.h> #include <getopt.h> #include <string.h> diff --git a/cmake/FindCUDAnvToolsExt.cmake b/cmake/FindCUDAnvToolsExt.cmake index f5144f8b9ad2c6a97b25ebf445e559b4542216e0..d1501b566e5a6b57da4845fca467235e1b6b1520 100644 --- a/cmake/FindCUDAnvToolsExt.cmake +++ b/cmake/FindCUDAnvToolsExt.cmake @@ -14,6 +14,12 @@ find_library( PATH_SUFFIXES lib64) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(CUDA_nvToolsExt_LIBRARY DEFAULT_MSG CUDA_nvToolsExt_LIBRARY) + +find_package_handle_standard_args( + CUDAnvToolsExt REQUIRED_VARS + CUDA_nvToolsExt_LIBRARY +) + +mark_as_advanced(CUDAnvToolsExt_DIR) endif(NOT CUDA_nvToolsExt_LIBRARY_FOUND) \ No newline at end of file diff --git a/cmake/FindFFTW3.cmake b/cmake/FindFFTW3.cmake index 472027aae6829cf8e730231cb836a0aadeb8ac95..96c5cc79b72a4bf1765db6b56be1ea70e0f2b13b 100644 --- a/cmake/FindFFTW3.cmake +++ b/cmake/FindFFTW3.cmake @@ -1,6 +1,6 @@ # - Try to find the FFTW3 library # Variables used by this module: -# FFTW3_ROOT_DIR - CUDA toolkit root directory +# FFTW3_ROOT_DIR - FFTW3 root directory # Variables defined by this module: # FFTW3_FOUND - system has FFTW3_LIBRARY # FFTW3_LIBRARY - the FFTW3_LIBRARY library @@ -33,16 +33,8 @@ find_library( include(FindPackageHandleStandardArgs) find_package_handle_standard_args( - FFTW3_INCLUDE_DIR DEFAULT_MSG - FFTW3_INCLUDE_DIR -) - -find_package_handle_standard_args( - FFTW3_LIBRARY DEFAULT_MSG - FFTW3_LIBRARY -) - -find_package_handle_standard_args( - FFTW3F_LIBRARY DEFAULT_MSG - FFTW3F_LIBRARY + FFTW3 REQUIRED_VARS + FFTW3_INCLUDE_DIR + FFTW3_LIBRARY + FFTW3F_LIBRARY ) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b6347f0ebbb3537b39b47db6814e578dd485056a..eaf4c687dcea7cde6c6b4d53b008af6ff51ba3f5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,6 +4,7 @@ # include directory for common header files include_directories(common) +include_directories(${CUDA_TOOLKIT_INCLUDE}) # add subdirectories for individual libraries add_subdirectory(common) @@ -14,7 +15,6 @@ add_subdirectory(external) # plan library ################################################################################ add_library(plan OBJECT Plan.cpp GPUPlan.cpp) -target_include_directories(plan PUBLIC ${CUDA_TOOLKIT_INCLUDE}) ################################################################################ diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 3036a141714abcb8fc931fe60eed7ce6e4f06b53..09a41fe55c429f75b6e5c64d0605287d6a84408b 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -1,6 +1,8 @@ -add_library(common OBJECT +add_library(common SHARED dedisp_error.cpp helper.cpp ) +target_link_libraries(common OpenMP::OpenMP_CXX) + add_subdirectory(cuda) diff --git a/src/common/helper.cpp b/src/common/helper.cpp index e91c6878c79b808e15fd4326e6ed9cbf67829d96..907b9dc084eb6f0e59b275e8cba1fcb2ce2083f1 100644 --- a/src/common/helper.cpp +++ b/src/common/helper.cpp @@ -6,6 +6,7 @@ #include "helper.h" #include <unistd.h> // get total memory #include <sys/resource.h> // get used memory +#include <omp.h> namespace dedisp { diff --git a/src/common/helper.h b/src/common/helper.h index f14ec3e2dd148a52777179717162a28c93173114..a2eb6e58d1b52bad8b85fd4dd3f7761764d89b9d 100644 --- a/src/common/helper.h +++ b/src/common/helper.h @@ -8,8 +8,6 @@ #include <cstddef> -#include "omp.h" - namespace dedisp { diff --git a/src/dedisp/CMakeLists.txt b/src/dedisp/CMakeLists.txt index 6da473ba1c71457037c2d286e405fa2eb02d90aa..276f085f8bc8dc20b5a2dee22181c72176ae1081 100644 --- a/src/dedisp/CMakeLists.txt +++ b/src/dedisp/CMakeLists.txt @@ -7,7 +7,6 @@ cuda_add_library( dedisperse/dedisperse.cu unpack/unpack.cu transpose/transpose.cu - $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:plan> $<TARGET_OBJECTS:external> $<TARGET_OBJECTS:clib> @@ -15,6 +14,7 @@ cuda_add_library( target_link_libraries( dedisp + common cu tdd fdd diff --git a/src/dedisp/dedisperse/dedisperse.cu b/src/dedisp/dedisperse/dedisperse.cu index 4a6486df2ee37b777324b8af0a5f31e69d8fdf2a..a3317ee52f25adb5dc00734c398a21946cdade51 100644 --- a/src/dedisp/dedisperse/dedisperse.cu +++ b/src/dedisp/dedisperse/dedisperse.cu @@ -89,6 +89,7 @@ bool dedisperse(const dedisp_word* d_in, // -------------------------------------- // Determine whether we should use texture memory bool use_texture_mem = check_use_texture_mem(); +#if (__CUDACC_VER_MAJOR__ < 11) if( use_texture_mem ) { dedisp_size chans_per_word = sizeof(dedisp_word)*BITS_PER_BYTE / in_nbits; dedisp_size nchan_words = nchans / chans_per_word; @@ -109,6 +110,9 @@ bool dedisperse(const dedisp_word* d_in, } #endif // DEDISP_DEBUG } +#else + use_texture_mem = false; +#endif // -------------------------------------- // Define thread decomposition diff --git a/src/fdd/CMakeLists.txt b/src/fdd/CMakeLists.txt index 2f7ab06deeb8dce284e731a6cbb4c440673a1d9f..444771fa2224067d87ddf7ef178c160a23b5371b 100644 --- a/src/fdd/CMakeLists.txt +++ b/src/fdd/CMakeLists.txt @@ -4,7 +4,6 @@ cuda_add_library(fdd SHARED dedisperse/FDDKernel.cu unpack/unpack.cu chunk.cpp - $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:plan> $<TARGET_OBJECTS:external> ) @@ -13,7 +12,9 @@ find_package(FFTW3 REQUIRED true) target_link_libraries(fdd ${FFTW3F_LIBRARY} + common cu + OpenMP::OpenMP_CXX ) target_include_directories(fdd diff --git a/src/tdd/CMakeLists.txt b/src/tdd/CMakeLists.txt index e2c8ea9813bfaeeccfc89d5b4fdf3f9106f56342..fd70d7ce77607fbc47df779cf12bfdecb244cdb5 100644 --- a/src/tdd/CMakeLists.txt +++ b/src/tdd/CMakeLists.txt @@ -3,13 +3,13 @@ cuda_add_library( TDDPlan.cpp dedisperse/TDDKernel.cu unpack/unpack.cu - $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:plan> $<TARGET_OBJECTS:external> ) target_link_libraries( tdd + common cu ) diff --git a/src/tdd/dedisperse/TDDKernel.cu b/src/tdd/dedisperse/TDDKernel.cu index bed8822ed87583e7411927b9400b01d37b6887db..f5fab65c072e07b9b4ff6f83ff8b5a99134abb51 100644 --- a/src/tdd/dedisperse/TDDKernel.cu +++ b/src/tdd/dedisperse/TDDKernel.cu @@ -49,6 +49,15 @@ unsigned int DedispKernel::get_nsamps_per_thread() return DEDISP_SAMPS_PER_THREAD; } +void DedispKernel::use_texture_memory(bool enabled) +{ +#if (__CUDACC_VER_MAJOR__ < 11) + m_use_texture_mem = enabled; +#else + m_use_texture_mem = false; +#endif +} + /* * dedisperse routine */ @@ -79,6 +88,7 @@ void DedispKernel::launch( // Initialise texture memory if necessary // -------------------------------------- +#if (__CUDACC_VER_MAJOR__ < 11) if (m_use_texture_mem && d_in != m_d_in) { m_d_in = (dedisp_word *) d_in; @@ -99,6 +109,7 @@ void DedispKernel::launch( input_words * sizeof(dedisp_word)) ); } +#endif // -------------------------------------- // Define thread decomposition diff --git a/src/tdd/dedisperse/TDDKernel.hpp b/src/tdd/dedisperse/TDDKernel.hpp index a6fcaccc434c83f1f59c4524fd44788f4f64d6fa..7b9e08d4fe00de3e3853cab5bf5beae8497bf6f4 100644 --- a/src/tdd/dedisperse/TDDKernel.hpp +++ b/src/tdd/dedisperse/TDDKernel.hpp @@ -23,7 +23,7 @@ class DedispKernel unsigned int get_nsamps_per_thread(); - void use_texture_memory(bool enabled) { m_use_texture_mem = enabled; }; + void use_texture_memory(bool enabled); void launch( const dedisp_word* d_in,