diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index b69fdea72c..d356d4cba6 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -246,6 +246,12 @@ set(DP_VARIANT "cpu") if(USE_CUDA_TOOLKIT) cmake_minimum_required(VERSION 3.25.2) find_package(CUDAToolkit REQUIRED) + # CUDA 13.0+ requires C++17 + if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.0") + set_if_higher(CMAKE_CXX_STANDARD 17) + message( + STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++ standard to 17") + endif() if(NOT DEFINED CMAKE_CUDA_COMPILER) set(CMAKE_CUDA_COMPILER ${CUDAToolkit_NVCC_EXECUTABLE}) endif() diff --git a/source/lib/src/gpu/CMakeLists.txt b/source/lib/src/gpu/CMakeLists.txt index 8aaf0c2904..6bd69d720e 100644 --- a/source/lib/src/gpu/CMakeLists.txt +++ b/source/lib/src/gpu/CMakeLists.txt @@ -26,7 +26,7 @@ if(USE_CUDA_TOOLKIT) # cub has been included in CUDA Toolkit 11, we do not need to include it any # more see https://github.com/NVIDIA/cub - if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_LESS "11") + if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS "11") include(FetchContent) FetchContent_Declare( cub_download @@ -39,10 +39,19 @@ if(USE_CUDA_TOOLKIT) endif() include_directories(${CUB_SOURCE_ROOT}) endif() - if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_LESS "9") + if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS "9") message(FATAL_ERROR "CUDA version must be >= 9.0") endif() + # CUDA 13.0+ requires C++17 + if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0") + set(CMAKE_CUDA_STANDARD 17) + message( + STATUS + "CUDA ${CMAKE_CUDA_COMPILER_VERSION} detected, setting C++ standard to 17" + ) + endif() + message(STATUS "NVCC version is " ${CMAKE_CUDA_COMPILER_VERSION}) # arch will be configured by CMAKE_CUDA_ARCHITECTURES