From e1d2ef0d9a517958ada663b758029242ca3b0327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicente=20Mataix=20Ferr=C3=A1ndiz?= Date: Sun, 1 Feb 2026 00:37:40 +0100 Subject: [PATCH 1/3] [CMake] Add support for C++17 standard with CUDA 13.1+ and update allowed architectures --- CMakeLists.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0de63cf..92014e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,22 @@ endif() # the project project (AMG LANGUAGES C CXX CUDA) +# Get the version number as integer +string(REPLACE "." ";" VERSION_LIST ${CUDAToolkit_VERSION}) +list(GET VERSION_LIST 0 CUDA_VERSION_MAJOR) +list(GET VERSION_LIST 1 CUDA_VERSION_MINOR) +list(GET VERSION_LIST 2 CUDA_VERSION_PATCH) + +# CUDA 13.1+ requires C++17 for Thrust/CCCL +if (CUDA_VERSION_MAJOR GREATER 13 OR (CUDA_VERSION_MAJOR EQUAL 13 AND CUDA_VERSION_MINOR GREATER_EQUAL 1)) + message(STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++17 standard") + set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard" FORCE) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CUDA_STANDARD 17 CACHE STRING "CUDA C++ standard" FORCE) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) +endif() + + find_package(MPI) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" ${CMAKE_MODULE_PATH}) From 45f14eebe4abc4eb841d698e92334d8e426c940e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicente=20Mataix=20Ferr=C3=A1ndiz?= Date: Sun, 1 Feb 2026 00:52:28 +0100 Subject: [PATCH 2/3] Simplify --- CMakeLists.txt | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 92014e9..d62c921 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,22 +46,15 @@ endif() # the project project (AMG LANGUAGES C CXX CUDA) -# Get the version number as integer -string(REPLACE "." ";" VERSION_LIST ${CUDAToolkit_VERSION}) -list(GET VERSION_LIST 0 CUDA_VERSION_MAJOR) -list(GET VERSION_LIST 1 CUDA_VERSION_MINOR) -list(GET VERSION_LIST 2 CUDA_VERSION_PATCH) - -# CUDA 13.1+ requires C++17 for Thrust/CCCL -if (CUDA_VERSION_MAJOR GREATER 13 OR (CUDA_VERSION_MAJOR EQUAL 13 AND CUDA_VERSION_MINOR GREATER_EQUAL 1)) - message(STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++17 standard") - set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard" FORCE) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CUDA_STANDARD 17 CACHE STRING "CUDA C++ standard" FORCE) - set(CMAKE_CUDA_STANDARD_REQUIRED ON) +# CUDA 13.1+ requires C++17 for Thrust and CUDA C++ Core Libraries +if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.1") + message(STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++17 standard") + set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard" FORCE) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CUDA_STANDARD 17 CACHE STRING "CUDA C++ standard" FORCE) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) endif() - find_package(MPI) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" ${CMAKE_MODULE_PATH}) From f20bf7603dc7a542512643642908b4dafe58848e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicente=20Mataix=20Ferr=C3=A1ndiz?= Date: Sun, 1 Feb 2026 01:02:29 +0100 Subject: [PATCH 3/3] Consistent version retrieval --- CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d62c921..8a8297c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,15 +46,6 @@ endif() # the project project (AMG LANGUAGES C CXX CUDA) -# CUDA 13.1+ requires C++17 for Thrust and CUDA C++ Core Libraries -if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.1") - message(STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++17 standard") - set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard" FORCE) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CUDA_STANDARD 17 CACHE STRING "CUDA C++ standard" FORCE) - set(CMAKE_CUDA_STANDARD_REQUIRED ON) -endif() - find_package(MPI) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" ${CMAKE_MODULE_PATH}) @@ -65,7 +56,7 @@ if(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) endif(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) # declare the supported configurations -set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Profile;RelWithTraces" CACHE STRING "Avaialble Configuration Types" FORCE) +set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Profile;RelWithTraces" CACHE STRING "Available Configuration Types" FORCE) # make sure a build type has been chosen!!! IF(NOT CMAKE_BUILD_TYPE) @@ -74,6 +65,15 @@ ENDIF(NOT CMAKE_BUILD_TYPE) find_package(CUDAToolkit 12.0 REQUIRED) +# CUDA 13.1+ requires C++17 for Thrust and CUDA C++ Core Libraries +if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.1") + message(STATUS "CUDA ${CUDAToolkit_VERSION} detected, setting C++17 standard") + set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard" FORCE) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CUDA_STANDARD 17 CACHE STRING "CUDA C++ standard" FORCE) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) +endif() + # update/define the compilation flags. IF(WIN32) set(CMAKE_C_FLAGS "/DWIN32 /D_WINDOWS /W3 /bigobj" CACHE STRING "" FORCE)