From 684dbe5a3aa24ffcdee30a30a2dd3c66af9b9311 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 17 Dec 2025 06:22:24 +0000 Subject: [PATCH 01/15] Add cuOpt to unified devcontainers --- .../devcontainer-feature.json | 2 +- .../opt/rapids-build-utils/manifest.yaml | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/features/src/rapids-build-utils/devcontainer-feature.json b/features/src/rapids-build-utils/devcontainer-feature.json index a13154af..b7563a36 100644 --- a/features/src/rapids-build-utils/devcontainer-feature.json +++ b/features/src/rapids-build-utils/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "NVIDIA RAPIDS devcontainer build utilities", "id": "rapids-build-utils", - "version": "26.2.5", + "version": "26.2.6", "description": "A feature to install the RAPIDS devcontainer build utilities", "containerEnv": { "BASH_ENV": "/etc/bash.bash_env" diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml index a70fcdc3..e11dc619 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml @@ -285,3 +285,20 @@ repos: - name: nx-cugraph sub_dir: . args: {install: *rapids_build_backend_args} + +- name: cuopt + path: cuopt + git: {<<: *git_defaults, repo: cuopt, upstream: NVIDIA} + cpp: + - name: cuopt + sub_dir: cpp + depends: [rmm, raft] + python: + - name: libcuopt + sub_dir: python/libcuopt + depends: [cuopt] + args: {install: *rapids_build_backend_args} + - name: cuopt + sub_dir: python/cuopt + depends: [cuopt, cudf, raft] + args: {install: *rapids_build_backend_args} From 906720aa55ae0a7db67185e2324d9e3c26abd1b6 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 17 Dec 2025 07:28:44 +0000 Subject: [PATCH 02/15] Add cuopt to container mounts --- .devcontainer/cuda12.9-conda/devcontainer.json | 3 ++- .devcontainer/cuda12.9-pip/devcontainer.json | 3 ++- .devcontainer/cuda13.0-conda/devcontainer.json | 3 ++- .devcontainer/cuda13.0-pip/devcontainer.json | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.devcontainer/cuda12.9-conda/devcontainer.json b/.devcontainer/cuda12.9-conda/devcontainer.json index 6bd5ae87..bccb5f62 100644 --- a/.devcontainer/cuda12.9-conda/devcontainer.json +++ b/.devcontainer/cuda12.9-conda/devcontainer.json @@ -47,7 +47,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.9-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.9-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -67,6 +67,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", diff --git a/.devcontainer/cuda12.9-pip/devcontainer.json b/.devcontainer/cuda12.9-pip/devcontainer.json index b80d0e87..26e65f6f 100644 --- a/.devcontainer/cuda12.9-pip/devcontainer.json +++ b/.devcontainer/cuda12.9-pip/devcontainer.json @@ -35,7 +35,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.9-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.9-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -55,6 +55,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", diff --git a/.devcontainer/cuda13.0-conda/devcontainer.json b/.devcontainer/cuda13.0-conda/devcontainer.json index 6c28df2d..77cc415c 100644 --- a/.devcontainer/cuda13.0-conda/devcontainer.json +++ b/.devcontainer/cuda13.0-conda/devcontainer.json @@ -47,7 +47,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.0-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.0-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -67,6 +67,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json index 4d2e03bc..dcc1621e 100644 --- a/.devcontainer/cuda13.0-pip/devcontainer.json +++ b/.devcontainer/cuda13.0-pip/devcontainer.json @@ -35,7 +35,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cumlprims_mg,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -55,6 +55,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", From 7ba694c408b3299693969ed9a2b7c27a069b7193 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Mon, 2 Feb 2026 18:33:16 -0600 Subject: [PATCH 03/15] Add cuopt to CUDA 13.1 devcontainers. --- .devcontainer/cuda13.1-conda/devcontainer.json | 3 ++- .devcontainer/cuda13.1-pip/devcontainer.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.devcontainer/cuda13.1-conda/devcontainer.json b/.devcontainer/cuda13.1-conda/devcontainer.json index 9a81af83..96de4f55 100644 --- a/.devcontainer/cuda13.1-conda/devcontainer.json +++ b/.devcontainer/cuda13.1-conda/devcontainer.json @@ -47,7 +47,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.1-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.1-envs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -66,6 +66,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", diff --git a/.devcontainer/cuda13.1-pip/devcontainer.json b/.devcontainer/cuda13.1-pip/devcontainer.json index 091d4bb7..f397d404 100644 --- a/.devcontainer/cuda13.1-pip/devcontainer.json +++ b/.devcontainer/cuda13.1-pip/devcontainer.json @@ -35,7 +35,7 @@ "./features/src/utils", "./features/src/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,cugraph,cugraph-gnn,nx-cugraph}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs,log/devcontainer-utils} ${localWorkspaceFolder}/../{rmm,dask-cuda,kvikio,ucxx,cudf,rapidsmpf,raft,cuvs,cuml,cugraph,cugraph-gnn,nx-cugraph,cuopt}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/devcontainers,type=bind,consistency=consistent", @@ -54,6 +54,7 @@ "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../cugraph-gnn,target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../nx-cugraph,target=/home/coder/nx-cugraph,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cuopt,target=/home/coder/cuopt,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", From 63a0fe21fe7d6206414163d21a58b9002416d812 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 15:14:24 -0800 Subject: [PATCH 04/15] add cuopt to matrix in build-all-rapids-repos.yml --- .github/workflows/build-all-rapids-repos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-all-rapids-repos.yml b/.github/workflows/build-all-rapids-repos.yml index 6e5149d7..12d9d4f4 100644 --- a/.github/workflows/build-all-rapids-repos.yml +++ b/.github/workflows/build-all-rapids-repos.yml @@ -40,7 +40,7 @@ jobs: matrix: include: - libs: "rmm ucxx kvikio dask-cuda cudf cudf_kafka rapidsmpf" - - libs: "rmm ucxx dask-cuda raft cuvs cuml" + - libs: "rmm ucxx dask-cuda raft cuvs cuml cuopt" - libs: "rmm ucxx dask-cuda raft cugraph cugraph-gnn nx-cugraph" with: From d548216e4305f38c20d7c92ab6beaa8153dd77aa Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 16:47:31 -0800 Subject: [PATCH 05/15] add option to install cuDSS --- features/src/cuda/devcontainer-feature.json | 7 ++++++- features/src/cuda/install.sh | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/features/src/cuda/devcontainer-feature.json b/features/src/cuda/devcontainer-feature.json index 638f30d8..3bd9535a 100644 --- a/features/src/cuda/devcontainer-feature.json +++ b/features/src/cuda/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "CUDA Toolkit", "id": "cuda", - "version": "26.4.0", + "version": "26.4.1", "description": "A feature to install the NVIDIA CUDA Toolkit", "options": { "version": { @@ -64,6 +64,11 @@ "default": false, "description": "Install CUDA Deep Neural Network Library (cuDNN)" }, + "installcuDSS": { + "type": "boolean", + "default": false, + "description": "Install CUDA Direct Solver of Sparse Linear Systems (cuDSS)" + }, "installcuTensor": { "type": "boolean", "default": false, diff --git a/features/src/cuda/install.sh b/features/src/cuda/install.sh index 7e0b218d..322d380d 100644 --- a/features/src/cuda/install.sh +++ b/features/src/cuda/install.sh @@ -186,6 +186,13 @@ if [ "${INSTALLCUDNN:-false}" = true ]; then fi fi +if "${INSTALLCUDSS:-false}"; then + PKGS+=("libcudss0${dev_tag}-cuda-${cuda_ver}"); + if ! "${PRUNESTATICLIBS:-false}"; then + PKGS+=("libcudss0-static-cuda-${cuda_ver}"); + fi +fi + if [ "${INSTALLNCCL:-false}" = true ] \ && test -n "$(apt-cache search libnccl2 2>/dev/null)" \ && apt-cache policy libnccl2 2>/dev/null | grep -q "+${cuda_tag}"; then From 25d88ad923cebad4bd0eb5411464ccfc234d5d2c Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 16:48:03 -0800 Subject: [PATCH 06/15] install additional cuopt dependencies in pip devcontainers --- .devcontainer/cuda12.9-pip/devcontainer.json | 1 + .devcontainer/cuda13.0-pip/devcontainer.json | 1 + .devcontainer/cuda13.1-pip/devcontainer.json | 1 + .devcontainer/rapids.Dockerfile | 6 ++++++ .../rapids-build-utils/opt/rapids-build-utils/manifest.yaml | 2 ++ 5 files changed, 11 insertions(+) diff --git a/.devcontainer/cuda12.9-pip/devcontainer.json b/.devcontainer/cuda12.9-pip/devcontainer.json index eccf59e1..bdc58eb3 100644 --- a/.devcontainer/cuda12.9-pip/devcontainer.json +++ b/.devcontainer/cuda12.9-pip/devcontainer.json @@ -22,6 +22,7 @@ "cuDNNVersion": "9", "installcuBLAS": true, "installcuDNN": true, + "installcuDSS": true, "installcuSOLVER": true, "installcuRAND": true, "installcuSPARSE": true, diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json index d01fc1ff..2831e2c0 100644 --- a/.devcontainer/cuda13.0-pip/devcontainer.json +++ b/.devcontainer/cuda13.0-pip/devcontainer.json @@ -22,6 +22,7 @@ "cuDNNVersion": "9", "installcuBLAS": true, "installcuDNN": true, + "installcuDSS": true, "installcuSOLVER": true, "installcuRAND": true, "installcuSPARSE": true, diff --git a/.devcontainer/cuda13.1-pip/devcontainer.json b/.devcontainer/cuda13.1-pip/devcontainer.json index f397d404..dfb80eb6 100644 --- a/.devcontainer/cuda13.1-pip/devcontainer.json +++ b/.devcontainer/cuda13.1-pip/devcontainer.json @@ -22,6 +22,7 @@ "cuDNNVersion": "9", "installcuBLAS": true, "installcuDNN": true, + "installcuDSS": true, "installcuSOLVER": true, "installcuRAND": true, "installcuSPARSE": true, diff --git a/.devcontainer/rapids.Dockerfile b/.devcontainer/rapids.Dockerfile index a86b7ccc..c64c52b8 100644 --- a/.devcontainer/rapids.Dockerfile +++ b/.devcontainer/rapids.Dockerfile @@ -20,6 +20,12 @@ RUN apt update -y \ liblapack-dev \ # rapidsmpf dependencies libnuma-dev \ + # cuOpt dependencies + libtbb-dev \ + libboost-dev \ + libboost-iostreams-dev \ + libboost-serialization-dev \ + libboost-program-options-dev \ && rm -rf /tmp/* /var/tmp/* /var/cache/apt/* /var/lib/apt/lists/*; ENV DEFAULT_VIRTUAL_ENV=rapids diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml index ec4e5d6b..0613db86 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml @@ -288,6 +288,8 @@ repos: - name: cuopt sub_dir: cpp depends: [rmm, raft] + env: | + CUDSS_DIR=/usr python: - name: libcuopt sub_dir: python/libcuopt From f32b55b9965fb8fbb33896384406d21533796c35 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 16:48:18 -0800 Subject: [PATCH 07/15] run commands with -euo pipefail --- .github/workflows/build-all-rapids-repos.yml | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-all-rapids-repos.yml b/.github/workflows/build-all-rapids-repos.yml index 12d9d4f4..6439f3a8 100644 --- a/.github/workflows/build-all-rapids-repos.yml +++ b/.github/workflows/build-all-rapids-repos.yml @@ -116,32 +116,32 @@ jobs: rapids-post-start-command; # Configure all the C++ libs - run_command "Configure C++ libraries" bash -c "\ - time configure-all \ - -j${PARALLEL_LEVEL} \ - -GNinja \ - -Wno-dev \ - -DBUILD_TESTS=ON \ - -DBUILD_BENCHMARKS=ON \ - -DBUILD_PRIMS_BENCH=ON \ - -DBUILD_SHARED_LIBS=ON \ - -DRAFT_COMPILE_LIBRARY=ON \ - -DBUILD_CUGRAPH_MG_TESTS=ON 2>&1 \ + run_command "Configure C++ libraries" bash -ceuo pipefail "\ + time configure-all \ + -j${PARALLEL_LEVEL} \ + -GNinja \ + -Wno-dev \ + -DBUILD_TESTS=ON \ + -DBUILD_BENCHMARKS=ON \ + -DBUILD_PRIMS_BENCH=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DRAFT_COMPILE_LIBRARY=ON \ + -DBUILD_CUGRAPH_MG_TESTS=ON 2>&1 \ | tee -a telemetry-artifacts/build.log"; # Build all the C++ libs - run_command "Build C++ libraries" bash -c "\ + run_command "Build C++ libraries" bash -ceuo pipefail "\ time build-all-cpp -j${PARALLEL_LEVEL} 2>&1 | tee -a telemetry-artifacts/build.log"; # Build all the Python libs - run_command "Build Python libraries" bash -c "\ + run_command "Build Python libraries" bash -ceuo pipefail "\ time build-all-python -j${PARALLEL_LEVEL} 2>&1 | tee -a telemetry-artifacts/build.log"; # Print cache and dist stats - run_command "sccache stats" bash -c "\ + run_command "sccache stats" bash -ceuo pipefail "\ sccache --show-adv-stats | tee -a telemetry-artifacts/sccache-stats.txt"; # Print build times - run_command "Build times" bash -c "\ + run_command "Build times" bash -ceuo pipefail "\ find /var/log/devcontainer-utils/ -type f -name 'build-*-time.log' -print0 \ | xargs -0 -n1 grep -H real | sed 's/real\t/ /g' || :" # Nonfatal if not found From 4daabbf2c1aea3565e56f84b79f3a03edfffea1a Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 16:59:57 -0800 Subject: [PATCH 08/15] use cuda_ver_major --- features/src/cuda/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/src/cuda/install.sh b/features/src/cuda/install.sh index 322d380d..7d38052e 100644 --- a/features/src/cuda/install.sh +++ b/features/src/cuda/install.sh @@ -187,9 +187,9 @@ if [ "${INSTALLCUDNN:-false}" = true ]; then fi if "${INSTALLCUDSS:-false}"; then - PKGS+=("libcudss0${dev_tag}-cuda-${cuda_ver}"); + PKGS+=("libcudss0${dev_tag}-cuda-${cuda_ver_major}"); if ! "${PRUNESTATICLIBS:-false}"; then - PKGS+=("libcudss0-static-cuda-${cuda_ver}"); + PKGS+=("libcudss0-static-cuda-${cuda_ver_major}"); fi fi From 3d5c88c2dc197c296c80a00e5c7250aa90226a9a Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 17:49:35 -0800 Subject: [PATCH 09/15] install the full cudss-cuda- package --- features/src/cuda/install.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/features/src/cuda/install.sh b/features/src/cuda/install.sh index 7d38052e..07843ea9 100644 --- a/features/src/cuda/install.sh +++ b/features/src/cuda/install.sh @@ -187,10 +187,7 @@ if [ "${INSTALLCUDNN:-false}" = true ]; then fi if "${INSTALLCUDSS:-false}"; then - PKGS+=("libcudss0${dev_tag}-cuda-${cuda_ver_major}"); - if ! "${PRUNESTATICLIBS:-false}"; then - PKGS+=("libcudss0-static-cuda-${cuda_ver_major}"); - fi + PKGS+=("cudss-cuda-${cuda_ver_major}"); fi if [ "${INSTALLNCCL:-false}" = true ] \ From e18c51b5e8dd8ec598c8da021d3d199a95b0c987 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 10 Feb 2026 17:54:44 -0800 Subject: [PATCH 10/15] update bash -c in test-rapids-build-times.yml too --- .github/workflows/test-rapids-build-times.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test-rapids-build-times.yml b/.github/workflows/test-rapids-build-times.yml index 5816091c..2cb6b6d6 100644 --- a/.github/workflows/test-rapids-build-times.yml +++ b/.github/workflows/test-rapids-build-times.yml @@ -127,7 +127,7 @@ jobs: } # Clone all the repos - time run_command "Clone RAPIDS repositories" bash -c "\ + time run_command "Clone RAPIDS repositories" bash -ceuo pipefail "\ RAPIDS_TO_UCXX_BRANCH=\"$(convert_ucx_branch ucxx '${{ inputs.branch }}')\"; CLONE_ARGS=(-j$(nproc) -q -v --clone-upstream --depth 1 --single-branch --shallow-submodules --no-update-env); clone-all -b \"${{ inputs.branch }}\" \${CLONE_ARGS[*]} >/dev/null 2>&1; @@ -136,13 +136,13 @@ jobs: sleep 1 - time run_command "Create RAPIDS python environment" bash -c "\ + time run_command "Create RAPIDS python environment" bash -ceuo pipefail "\ rapids-post-start-command >/dev/null" 2>&1 sleep 1 # Configure all the C++ libs - time run_command "Configure C++ libraries" bash -c "\ + time run_command "Configure C++ libraries" bash -ceuo pipefail "\ configure-all \ -j${PARALLEL_LEVEL} \ -GNinja \ @@ -162,11 +162,11 @@ jobs: "SCCACHE_S3_USE_PREPROCESSOR_CACHE_MODE=1" ; do # Restart sccache - run_command "Start sccache (${ENVVAR})" bash -c "\ + run_command "Start sccache (${ENVVAR})" bash -ceuo pipefail "\ ${ENVVAR} devcontainer-utils-start-sccache --kill-all >/dev/null 2>&1" # Build all the C++ libs - time run_command "Build C++ libraries (${ENVVAR})" bash -c "\ + time run_command "Build C++ libraries (${ENVVAR})" bash -ceuo pipefail "\ ${ENVVAR} build-all-cpp -j${PARALLEL_LEVEL} >/dev/null" 2>&1 sleep 1 @@ -176,12 +176,12 @@ jobs: sccache --show-adv-stats # Print build times - run_command "Build times (${ENVVAR})" bash -c "\ + run_command "Build times (${ENVVAR})" bash -ceuo pipefail "\ find /var/log/devcontainer-utils/ -type f -name 'build-*-time.log' -print0 \ | xargs -0 -n1 grep -H real | sed 's/real\t/ /g' || : # Nonfatal if not found" # Clean - run_command "Clean (${ENVVAR})" bash -c "\ + run_command "Clean (${ENVVAR})" bash -ceuo pipefail "\ find /var/log/devcontainer-utils/ -type f -name 'build-*-time.log' -delete >/dev/null 2>&1 || : # Nonfatal if not found find ~/ -maxdepth 4 -type l -path '*/cpp/build/latest' -print0 | xargs -P$(nproc) -0 -n1 ninja clean -C >/dev/null 2>&1 || : # Nonfatal if not found" done From 96f304f9a649e245a401efd01c95b74eb6af9ed5 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 18 Feb 2026 15:36:20 -0800 Subject: [PATCH 11/15] set -D_GLIBCXX_USE_TBB_PAR_BACKEND=0 for cugraph --- .../opt/rapids-build-utils/manifest.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml index 0613db86..21debac7 100755 --- a/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml +++ b/features/src/rapids-build-utils/opt/rapids-build-utils/manifest.yaml @@ -225,13 +225,18 @@ repos: - name: cugraph sub_dir: cpp depends: [rmm, ucxx, raft, cuvs] - parallelism: - max_device_obj_memory_usage: 6Gi + env: | + CFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 + CXXFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 + CUDAFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 test: ci/run_ctests.sh - name: cugraph_etl sub_dir: cpp/libcugraph_etl depends: [cudf, cugraph] - args: {install: *rapids_build_backend_args} + env: | + CFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 + CXXFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 + CUDAFLAGS=-D_GLIBCXX_USE_TBB_PAR_BACKEND=0 python: - name: libcugraph sub_dir: python/libcugraph From c658e8ac28422512335bb24caa2d8c1e56329bb5 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 25 Feb 2026 21:44:21 -0800 Subject: [PATCH 12/15] try installing clangd dev --- matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix.yml b/matrix.yml index 7202c54a..072bd17e 100644 --- a/matrix.yml +++ b/matrix.yml @@ -40,7 +40,7 @@ x-ucx-rapids: &ucx_rapids { name: "ucx", version: "1.19.0" } x-openmpi: &openmpi { name: "openmpi", version: "5.0.7" } x-cccl-dev: &cccl_dev { name: "cccl-dev", hide: true, doxygenVersion: "1.9.6" } -x-clangd-dev: &clangd_dev { name: "llvm", version: "22", packages: "clangd", hide: true } +x-clangd-dev: &clangd_dev { name: "llvm", version: "dev", packages: "clangd", hide: true } x-clang-format-cccl: &clang_format_cccl { name: "llvm", version: "21", packages: "clang-format llvm-tools", hide: true } x-clang-format-rapids: &clang_format_rapids { name: "llvm", version: "16", packages: "clang-format", hide: true } # Docker outside of Docker used to build python wheels: From bc40cc1c76c03de2863ff9e04ae0e4f207600294 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Thu, 26 Feb 2026 13:19:25 -0800 Subject: [PATCH 13/15] install clangd-21 --- matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix.yml b/matrix.yml index 072bd17e..53bff924 100644 --- a/matrix.yml +++ b/matrix.yml @@ -40,7 +40,7 @@ x-ucx-rapids: &ucx_rapids { name: "ucx", version: "1.19.0" } x-openmpi: &openmpi { name: "openmpi", version: "5.0.7" } x-cccl-dev: &cccl_dev { name: "cccl-dev", hide: true, doxygenVersion: "1.9.6" } -x-clangd-dev: &clangd_dev { name: "llvm", version: "dev", packages: "clangd", hide: true } +x-clangd-dev: &clangd_dev { name: "llvm", version: "21", packages: "clangd", hide: true } x-clang-format-cccl: &clang_format_cccl { name: "llvm", version: "21", packages: "clang-format llvm-tools", hide: true } x-clang-format-rapids: &clang_format_rapids { name: "llvm", version: "16", packages: "clang-format", hide: true } # Docker outside of Docker used to build python wheels: From 5d13ced24d4d4f6158d399da15be127c1ef55f8c Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 2 Mar 2026 15:56:35 -0800 Subject: [PATCH 14/15] add repoVersionOverride option to llvm feature so we can switch back to clangd-22 --- features/src/llvm/devcontainer-feature.json | 8 +++- features/src/llvm/install.sh | 1 + features/src/llvm/llvm.sh | 48 +++++++++++---------- matrix.yml | 2 +- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/features/src/llvm/devcontainer-feature.json b/features/src/llvm/devcontainer-feature.json index 4b80836a..07e40634 100644 --- a/features/src/llvm/devcontainer-feature.json +++ b/features/src/llvm/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "LLVM compilers and tools", "id": "llvm", - "version": "26.4.0", + "version": "26.4.1", "description": "A feature to install LLVM compilers and tools", "options": { "version": { @@ -25,6 +25,12 @@ "type": "string", "default": "all", "description": "LLVM packages to install." + }, + "repoVersionOverride": { + "type": "string", + "default": "", + "proposals": ["", "latest"], + "description": "Override the apt repo version component (i.e. `llvm-toolchain-jammy-`) in case the LLVM repo is in a transitional state and the desired version isn't published to the version-specific URL yet." } }, "containerEnv": { diff --git a/features/src/llvm/install.sh b/features/src/llvm/install.sh index c6b585f2..aad632b5 100755 --- a/features/src/llvm/install.sh +++ b/features/src/llvm/install.sh @@ -8,6 +8,7 @@ cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; . ./common/install.sh; LLVM_VERSION="${VERSION:-}"; +export LLVM_REPO_VERSION_OVERRIDE="${REPOVERSIONOVERRIDE:-}"; check_packages \ git \ diff --git a/features/src/llvm/llvm.sh b/features/src/llvm/llvm.sh index 4b0e1bd3..096ec7d7 100755 --- a/features/src/llvm/llvm.sh +++ b/features/src/llvm/llvm.sh @@ -38,13 +38,13 @@ if [[ ${#missing_binaries[@]} -gt 0 ]] ; then fi # Set default values for commandline arguments -DISTRO=$(lsb_release -is) -VERSION=$(lsb_release -sr) +DISTRO="$(lsb_release -is)" +VERSION="$(lsb_release -sr)" UBUNTU_CODENAME="" CODENAME_FROM_ARGUMENTS="" # Obtain VERSION_CODENAME and UBUNTU_CODENAME (for Ubuntu and its derivatives) source /etc/os-release -DISTRO=${DISTRO,,} +DISTRO="${DISTRO,,}" case ${DISTRO} in debian) if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "bookworm" ]]; then @@ -54,23 +54,23 @@ case ${DISTRO} in LINKNAME= else # "stable" Debian release - CODENAME=${VERSION_CODENAME} - LINKNAME=-${CODENAME} + CODENAME="${VERSION_CODENAME}" + LINKNAME="-${CODENAME}" fi ;; *) # ubuntu and its derivatives if [[ -n "${UBUNTU_CODENAME}" ]]; then - CODENAME=${UBUNTU_CODENAME} + CODENAME="${UBUNTU_CODENAME}" if [[ -n "${CODENAME}" ]]; then - LINKNAME=-${CODENAME} + LINKNAME="-${CODENAME}" fi fi ;; esac # read command line arguments -LLVM_VERSION=$1; +LLVM_VERSION="${1:-}"; PKG=(${*:2}); while getopts ":hm:n:" arg; do @@ -79,15 +79,15 @@ while getopts ":hm:n:" arg; do usage ;; m) - BASE_URL=${OPTARG} + BASE_URL="${OPTARG}" ;; n) - CODENAME=${OPTARG} + CODENAME="${OPTARG}" if [[ "${CODENAME}" == "unstable" ]]; then # link name does not apply to unstable repository LINKNAME= else - LINKNAME=-${CODENAME} + LINKNAME="-${CODENAME}" fi CODENAME_FROM_ARGUMENTS="true" ;; @@ -129,18 +129,22 @@ LLVM_VERSION_STRING="${LLVM_VERSION_PATTERNS[$LLVM_VERSION]}" # join the repository name if [[ -n "${CODENAME}" ]]; then - retry_count=0; + if [ "${LLVM_REPO_VERSION_OVERRIDE:-}" = latest ]; then + LLVM_VERSION_STRING="" + else + retry_count=0; - while ! wget --no-hsts -q --method=HEAD \ - "${BASE_URL}/${CODENAME}/dists/llvm-toolchain${LINKNAME}${LLVM_VERSION_PATTERNS[$LLVM_VERSION]}/Release" >/dev/null 2>&1; do - if test $(( retry_count++ )) -ge 5; then - LLVM_VERSION_STRING= - break; - fi - sleep_time=$((retry_count * 5)) - echo "Attempt $retry_count failed! Trying again in $sleep_time seconds..." - sleep $sleep_time - done + while ! wget --no-hsts -q --method=HEAD \ + "${BASE_URL}/${CODENAME}/dists/llvm-toolchain${LINKNAME}${LLVM_VERSION_PATTERNS[$LLVM_VERSION]}/Release" >/dev/null 2>&1; do + if test $(( retry_count++ )) -ge 5; then + LLVM_VERSION_STRING="" + break; + fi + sleep_time="$((retry_count * 5))" + echo "Attempt $retry_count failed! Trying again in $sleep_time seconds..." + sleep "$sleep_time" + done + fi REPO_NAME="deb ${BASE_URL}/${CODENAME}/ llvm-toolchain${LINKNAME}${LLVM_VERSION_STRING} main" diff --git a/matrix.yml b/matrix.yml index 53bff924..f26c7d45 100644 --- a/matrix.yml +++ b/matrix.yml @@ -40,7 +40,7 @@ x-ucx-rapids: &ucx_rapids { name: "ucx", version: "1.19.0" } x-openmpi: &openmpi { name: "openmpi", version: "5.0.7" } x-cccl-dev: &cccl_dev { name: "cccl-dev", hide: true, doxygenVersion: "1.9.6" } -x-clangd-dev: &clangd_dev { name: "llvm", version: "21", packages: "clangd", hide: true } +x-clangd-dev: &clangd_dev { name: "llvm", version: "22", packages: "clangd", repoVersionOverride: "latest", hide: true } x-clang-format-cccl: &clang_format_cccl { name: "llvm", version: "21", packages: "clang-format llvm-tools", hide: true } x-clang-format-rapids: &clang_format_rapids { name: "llvm", version: "16", packages: "clang-format", hide: true } # Docker outside of Docker used to build python wheels: From 03f8422f94f1e37d8931191f6ae0a4135905302d Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 2 Mar 2026 16:13:36 -0800 Subject: [PATCH 15/15] install clangd-22 for bionic and jammy differently --- matrix.yml | 90 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/matrix.yml b/matrix.yml index f26c7d45..533366ef 100644 --- a/matrix.yml +++ b/matrix.yml @@ -40,7 +40,9 @@ x-ucx-rapids: &ucx_rapids { name: "ucx", version: "1.19.0" } x-openmpi: &openmpi { name: "openmpi", version: "5.0.7" } x-cccl-dev: &cccl_dev { name: "cccl-dev", hide: true, doxygenVersion: "1.9.6" } -x-clangd-dev: &clangd_dev { name: "llvm", version: "22", packages: "clangd", repoVersionOverride: "latest", hide: true } +x-clangd-dev-bionic: &clangd_dev_bionic { name: "llvm", version: "22", packages: "clangd", repoVersionOverride: "latest", hide: true } +x-clangd-dev-jammy: &clangd_dev_jammy { name: "llvm", version: "22", packages: "clangd", repoVersionOverride: "latest", hide: true } +x-clangd-dev: &clangd_dev { name: "llvm", version: "22", packages: "clangd", hide: true } x-clang-format-cccl: &clang_format_cccl { name: "llvm", version: "21", packages: "clang-format llvm-tools", hide: true } x-clang-format-rapids: &clang_format_rapids { name: "llvm", version: "16", packages: "clang-format", hide: true } # Docker outside of Docker used to build python wheels: @@ -77,56 +79,56 @@ include: - os: "ubuntu:20.04" images: - - { features: [*python, *dood, *gcc_7, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_7, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_8, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_8, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_9, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_9, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_10, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_10, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - - { features: [*python, *dood, *llvm_14, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_14, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *gcc_7, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_7, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_8, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_8, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_9, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_9, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_10, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_10, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *gcc_env } + + - { features: [*python, *dood, *llvm_14, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_14, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_bionic, *cccl_dev], env: *llvm_env } - os: "ubuntu:22.04" images: - - { features: [*python, *dood, *gcc_11, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_11, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_11, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_11, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_12, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_12, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_12, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - { features: [*python, *dood, *gcc_12, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_11, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_11, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_11, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_11, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_12, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_12, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_12, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + - { features: [*python, *dood, *gcc_12, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } # This is only used for testing python -- CTKk 12.0 + gcc13 don't play nice together, but # that doesn't matter for running python tests, and pinning all python jobs at 13 simplifies # things significantly. - - { features: [*python, *dood, *gcc_13, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *gcc_env } - - - { features: [*python, *dood, *llvm_15, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_15, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_15, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_15, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_16, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_16, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_16, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_16, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_17, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_17, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_17, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_17, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_18, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_18, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_18, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_18, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_19, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_19, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_19, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_19, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_20, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } - - { features: [*python, *dood, *llvm_21, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *gcc_13, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *gcc_env } + + - { features: [*python, *dood, *llvm_15, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_15, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_15, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_15, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_16, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_16, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_16, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_16, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_17, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_17, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_17, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_17, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_18, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_18, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_18, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_18, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_19, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_19, { <<: *cuda_prev_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_19, { <<: *cuda_curr_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_19, { <<: *cuda_curr_max, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_20, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } + - { features: [*python, *dood, *llvm_21, { <<: *cuda_prev_min, <<: *cccl_cuda_opts }, *clang_format_cccl, *clangd_dev_jammy, *cccl_dev], env: *llvm_env } - os: "ubuntu:24.04" images: