From f3d48e4f2ff8938e5eb5ff02f9d3266945c9887a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 8 Jul 2026 20:54:26 +0200 Subject: [PATCH] Test ci_cuda_example against a CUDA version matrix at C++20 (#3907) The ci_cuda_example job compiled against the json-ci image's CUDA 11.0 toolkit at cuda_std_11, which cannot exercise #3907 (a c++20 parse error in iteration_proxy.hpp's enable_borrowed_range reported under nvcc). Switch the job to pull official nvidia/cuda devel images directly and matrix across CUDA 11.8-12.6 at cuda_std_20 so CI can empirically confirm which versions are actually affected before any source-level fix is attempted. Signed-off-by: Niels Lohmann --- .github/workflows/ubuntu.yml | 11 ++++++++++- cmake/ci.cmake | 1 - tests/cuda_example/CMakeLists.txt | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7e27ab332..610291654 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -234,11 +234,20 @@ jobs: ci_cuda_example: runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 + strategy: + fail-fast: false + matrix: + # matrix to empirically pin down which nvcc/CUDA versions reproduce #3907 + # (a c++20 parse error in iteration_proxy.hpp's enable_borrowed_range) before + # attempting a source-level fix; 11.8 predates CUDA's C++20 support entirely. + cuda: ['11.8.0', '12.0.1', '12.1.1', '12.2.2', '12.3.2', '12.4.1', '12.5.1', '12.6.3'] + container: nvidia/cuda:${{ matrix.cuda }}-devel-ubuntu22.04 steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false + - name: Get latest CMake and ninja + uses: lukka/get-cmake@f5b8fbb4d77cec1acc5a5f9f0df4beffaf5d98d9 # v4.3.4 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build diff --git a/cmake/ci.cmake b/cmake/ci.cmake index 834687f57..796b2020c 100644 --- a/cmake/ci.cmake +++ b/cmake/ci.cmake @@ -669,7 +669,6 @@ add_custom_target(ci_test_compiler_default add_custom_target(ci_cuda_example COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja - -DCMAKE_CUDA_HOST_COMPILER=g++-8 -S${PROJECT_SOURCE_DIR}/tests/cuda_example -B${PROJECT_BINARY_DIR}/build_cuda_example COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_cuda_example ) diff --git a/tests/cuda_example/CMakeLists.txt b/tests/cuda_example/CMakeLists.txt index 26b57f227..9ea022f44 100644 --- a/tests/cuda_example/CMakeLists.txt +++ b/tests/cuda_example/CMakeLists.txt @@ -3,7 +3,7 @@ project(json_cuda LANGUAGES CUDA) add_executable(json_cuda json_cuda.cu) target_include_directories(json_cuda PRIVATE ../../include) -target_compile_features(json_cuda PUBLIC cuda_std_11) +target_compile_features(json_cuda PUBLIC cuda_std_20) set_target_properties(json_cuda PROPERTIES CUDA_EXTENSIONS OFF CUDA_STANDARD_REQUIRED ON