From e51daa8acf0677087e188f1b9c17b46789fe74c2 Mon Sep 17 00:00:00 2001 From: OutisLi Date: Wed, 15 Oct 2025 11:49:22 +0800 Subject: [PATCH 1/5] feat:support CUDA 13.0+ --- source/CMakeLists.txt | 10 ++++++++++ source/lib/src/gpu/CMakeLists.txt | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index b69fdea72c..65fb280acd 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -29,6 +29,16 @@ if(NOT DEEPMD_C_ROOT) set_if_higher(CMAKE_CXX_STANDARD 14) endif() +# CUDA 13.0+ requires C++17 +if(USE_CUDA_TOOLKIT) + if(DEFINED CUDAToolkit_VERSION AND 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() +endif() + if(ENABLE_PADDLE) if(NOT DEFINED PADDLE_INFERENCE_DIR) # message(FATAL_ERROR "Make sure PADDLE_INFERENCE_DIR is set when diff --git a/source/lib/src/gpu/CMakeLists.txt b/source/lib/src/gpu/CMakeLists.txt index 8aaf0c2904..6ff54e05b2 100644 --- a/source/lib/src/gpu/CMakeLists.txt +++ b/source/lib/src/gpu/CMakeLists.txt @@ -43,6 +43,15 @@ if(USE_CUDA_TOOLKIT) 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 From 7acc83d92ed8ed118b539fe5a481cc1d3e00c103 Mon Sep 17 00:00:00 2001 From: OutisLi <137472077+OutisLi@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:42:27 +0800 Subject: [PATCH 2/5] Update source/CMakeLists.txt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: OutisLi <137472077+OutisLi@users.noreply.github.com> --- source/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 65fb280acd..4851f53b5e 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -31,11 +31,11 @@ endif() # CUDA 13.0+ requires C++17 if(USE_CUDA_TOOLKIT) - if(DEFINED CUDAToolkit_VERSION AND CUDAToolkit_VERSION VERSION_GREATER_EQUAL + if(DEFINED CMAKE_CUDA_COMPILER_VERSION AND CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0") set_if_higher(CMAKE_CXX_STANDARD 17) message( - STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++ standard to 17") + STATUS "CUDA ${CMAKE_CUDA_COMPILER_VERSION} detected, setting C++ standard to 17") endif() endif() From ec08384256c5581abb4ec917e20d883e8cb50b2b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 04:44:07 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- source/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 4851f53b5e..60a9884d7c 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -31,11 +31,13 @@ endif() # CUDA 13.0+ requires C++17 if(USE_CUDA_TOOLKIT) - if(DEFINED CMAKE_CUDA_COMPILER_VERSION AND CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL - "13.0") + if(DEFINED CMAKE_CUDA_COMPILER_VERSION AND CMAKE_CUDA_COMPILER_VERSION + VERSION_GREATER_EQUAL "13.0") set_if_higher(CMAKE_CXX_STANDARD 17) message( - STATUS "CUDA ${CMAKE_CUDA_COMPILER_VERSION} detected, setting C++ standard to 17") + STATUS + "CUDA ${CMAKE_CUDA_COMPILER_VERSION} detected, setting C++ standard to 17" + ) endif() endif() From 6d0f04b98c5b89602a666cd3cec9946bbc92fd69 Mon Sep 17 00:00:00 2001 From: OutisLi Date: Wed, 15 Oct 2025 12:46:43 +0800 Subject: [PATCH 4/5] refactor --- source/CMakeLists.txt | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 60a9884d7c..d356d4cba6 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -29,18 +29,6 @@ if(NOT DEEPMD_C_ROOT) set_if_higher(CMAKE_CXX_STANDARD 14) endif() -# CUDA 13.0+ requires C++17 -if(USE_CUDA_TOOLKIT) - if(DEFINED CMAKE_CUDA_COMPILER_VERSION AND CMAKE_CUDA_COMPILER_VERSION - VERSION_GREATER_EQUAL "13.0") - set_if_higher(CMAKE_CXX_STANDARD 17) - message( - STATUS - "CUDA ${CMAKE_CUDA_COMPILER_VERSION} detected, setting C++ standard to 17" - ) - endif() -endif() - if(ENABLE_PADDLE) if(NOT DEFINED PADDLE_INFERENCE_DIR) # message(FATAL_ERROR "Make sure PADDLE_INFERENCE_DIR is set when @@ -258,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() From 013e6764c88c94ad6b6943c9560e9aaa4840cf3f Mon Sep 17 00:00:00 2001 From: OutisLi Date: Fri, 17 Oct 2025 16:50:21 +0800 Subject: [PATCH 5/5] do not use ${xxx} inside if --- source/lib/src/gpu/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/lib/src/gpu/CMakeLists.txt b/source/lib/src/gpu/CMakeLists.txt index 6ff54e05b2..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,12 +39,12 @@ 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") + if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0") set(CMAKE_CUDA_STANDARD 17) message( STATUS