From f5c6fbdfce4d35dc03294251a79afa35f1329e1f Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 30 Apr 2026 15:19:21 -0500 Subject: [PATCH 1/7] Add cuOpt devcontainer configuration --- .devcontainer/Dockerfile | 71 +++++++++++++++++++ .devcontainer/README.md | 60 ++++++++++++++++ .../cuda12.9-conda/devcontainer.json | 44 ++++++++++++ .devcontainer/cuda12.9-pip/devcontainer.json | 53 ++++++++++++++ .../cuda13.1-conda/devcontainer.json | 44 ++++++++++++ .devcontainer/cuda13.1-pip/devcontainer.json | 53 ++++++++++++++ .github/workflows/pr.yaml | 20 ++++++ ci/release/update-version.sh | 8 +++ 8 files changed, 353 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/README.md create mode 100644 .devcontainer/cuda12.9-conda/devcontainer.json create mode 100644 .devcontainer/cuda12.9-pip/devcontainer.json create mode 100644 .devcontainer/cuda13.1-conda/devcontainer.json create mode 100644 .devcontainer/cuda13.1-pip/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..5412018400 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,71 @@ +# syntax=docker/dockerfile:1.5 +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +ARG BASE +ARG PYTHON_PACKAGE_MANAGER=conda + +FROM ${BASE} as pip-base + +RUN apt update -y \ + && DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \ + libboost-iostreams-dev \ + libboost-serialization-dev \ + libgrpc-dev \ + libgrpc++-dev \ + libprotobuf-dev \ + protobuf-compiler \ + protobuf-compiler-grpc \ + libtbb-dev \ + && rm -rf /tmp/* /var/tmp/* /var/cache/apt/* /var/lib/apt/lists/*; + +ENV DEFAULT_VIRTUAL_ENV=rapids +ENV RAPIDS_LIBUCX_PREFER_SYSTEM_LIBRARY=true + +FROM ${BASE} as conda-base + +ENV DEFAULT_CONDA_ENV=rapids + +FROM ${PYTHON_PACKAGE_MANAGER}-base + +ARG TARGETARCH + +ARG CUDA +ENV CUDAARCHS="RAPIDS" +ENV CUDA_VERSION="${CUDA_VERSION:-${CUDA}}" + +ARG PYTHON_PACKAGE_MANAGER +ENV PYTHON_PACKAGE_MANAGER="${PYTHON_PACKAGE_MANAGER}" + +ENV PYTHONSAFEPATH="1" +ENV PYTHONUNBUFFERED="1" +ENV PYTHONDONTWRITEBYTECODE="1" + +ENV HISTFILE="/home/coder/.cache/._bash_history" + +### +# sccache configuration +### +ENV AWS_IDP_URL="https://token.rapids.nvidia.com" +ENV AWS_ROLE_ARN="arn:aws:iam::279114543810:role/rapids-token-sccache-devs" +ENV SCCACHE_REGION="us-east-2" +ENV SCCACHE_BUCKET="rapids-sccache-devs" +ENV SCCACHE_S3_USE_PREPROCESSOR_CACHE_MODE=true +ENV SCCACHE_IDLE_TIMEOUT=0 + +### +# sccache-dist configuration +### +# Enable sccache-dist by default +ENV DEVCONTAINER_UTILS_ENABLE_SCCACHE_DIST=1 +# Compile locally if max retries exceeded +ENV SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE=true +# Retry transient errors 4 times (for a total of 5 attempts) +ENV SCCACHE_DIST_MAX_RETRIES=4 +# 1hr 59min (to accommodate debug builds) +ENV SCCACHE_DIST_REQUEST_TIMEOUT=7140 +ENV SCCACHE_DIST_URL="https://${TARGETARCH}.linux.sccache.rapids.nvidia.com" + +# Build as much in parallel as possible +ENV INFER_NUM_DEVICE_ARCHITECTURES=1 +ENV MAX_DEVICE_OBJ_TO_COMPILE_IN_PARALLEL=20 diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 0000000000..476cff60f0 --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,60 @@ +# cuOpt Development Containers + +This directory contains [devcontainer configurations](https://containers.dev/implementors/json_reference/) for using VSCode to [develop in a container](https://code.visualstudio.com/docs/devcontainers/containers) via the `Remote Containers` [extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) or [GitHub Codespaces](https://github.com/codespaces). + +This container is a turnkey development environment for building and testing the cuOpt C++ and Python libraries. + +## Table of Contents + +* [Prerequisites](#prerequisites) +* [Host bind mounts](#host-bind-mounts) +* [Launch a Dev Container](#launch-a-dev-container) +* [Using the devcontainer](#using-the-devcontainer) + +## Prerequisites + +* [VSCode](https://code.visualstudio.com/download) +* [VSCode Remote Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +## Host bind mounts + +By default, the following directories are bind-mounted into the devcontainer: + +* `${repo}:/home/coder/cuopt` +* `${repo}/../.aws:/home/coder/.aws` +* `${repo}/../.local:/home/coder/.local` +* `${repo}/../.cache:/home/coder/.cache` +* `${repo}/../.conda:/home/coder/.conda` +* `${repo}/../.config:/home/coder/.config` + +This ensures caches, configurations, dependencies, and your commits are persisted on the host across container runs. + +## Launch a Dev Container + +To launch a devcontainer from VSCode, open the cuOpt repo and select the "Reopen in Container" button in the bottom right:
+ +Alternatively, open the VSCode command palette (typically `cmd/ctrl + shift + P`) and run the "Rebuild and Reopen in Container" command. + +## Using the devcontainer + +On startup, the devcontainer creates or updates the conda/pip environment using `cuopt/dependencies.yaml`. + +The container includes convenience functions to clean, configure, and build the cuOpt components: + +```shell +$ clean-cuopt-cpp # only cleans the C++ build dir +$ clean-cuopt-python # only cleans the Python build dir +$ clean-cuopt # cleans both C++ and Python build dirs + +$ configure-cuopt-cpp # only configures cuOpt C++ lib + +$ build-cuopt-cpp # only builds cuOpt C++ lib +$ build-cuopt-python # only builds cuOpt Python lib +$ build-cuopt # builds both C++ and Python libs +$ build-all # builds all libraries in this repo +``` + +* The C++ build script is a small wrapper around `cmake -S ~/cuopt/cpp -B ~/cuopt/cpp/build` and `cmake --build ~/cuopt/cpp/build` +* The Python build script is a small wrapper around `pip install --editable ~/cuopt/python/cuopt` + +Unlike `build.sh`, these convenience scripts do not install the libraries after building them. Instead, they automatically inject the correct arguments to build the C++ libraries from source and use their build dirs as package roots. diff --git a/.devcontainer/cuda12.9-conda/devcontainer.json b/.devcontainer/cuda12.9-conda/devcontainer.json new file mode 100644 index 0000000000..534787af14 --- /dev/null +++ b/.devcontainer/cuda12.9-conda/devcontainer.json @@ -0,0 +1,44 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "12.9", + "PYTHON_PACKAGE_MANAGER": "conda", + "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda12.9-conda", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.6": {} + }, + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.9-envs}"], + "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", + "mounts": [ + "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", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.9-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.devcontainer/cuda12.9-pip/devcontainer.json b/.devcontainer/cuda12.9-pip/devcontainer.json new file mode 100644 index 0000000000..b0e98ae436 --- /dev/null +++ b/.devcontainer/cuda12.9-pip/devcontainer.json @@ -0,0 +1,53 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "12.9", + "PYTHON_PACKAGE_MANAGER": "pip", + "BASE": "rapidsai/devcontainers:26.06-cpp-cuda12.9-ucx1.19.0-openmpi5.0.10" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda12.9-pip", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/cuda:26.6": { + "version": "12.9", + "installcuBLAS": true, + "installcuDSS": true, + "installcuSOLVER": true, + "installcuRAND": true, + "installcuSPARSE": true + }, + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.6": {} + }, + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/ucx", + "ghcr.io/rapidsai/devcontainers/features/cuda", + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.9-venvs}"], + "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", + "mounts": [ + "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", + "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.9-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.devcontainer/cuda13.1-conda/devcontainer.json b/.devcontainer/cuda13.1-conda/devcontainer.json new file mode 100644 index 0000000000..f3a622698d --- /dev/null +++ b/.devcontainer/cuda13.1-conda/devcontainer.json @@ -0,0 +1,44 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "13.1", + "PYTHON_PACKAGE_MANAGER": "conda", + "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.1-conda", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.6": {} + }, + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.1-envs}"], + "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", + "mounts": [ + "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", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.1-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.devcontainer/cuda13.1-pip/devcontainer.json b/.devcontainer/cuda13.1-pip/devcontainer.json new file mode 100644 index 0000000000..7799ecd9c9 --- /dev/null +++ b/.devcontainer/cuda13.1-pip/devcontainer.json @@ -0,0 +1,53 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "13.1", + "PYTHON_PACKAGE_MANAGER": "pip", + "BASE": "rapidsai/devcontainers:26.06-cpp-cuda13.1-ucx1.19.0-openmpi5.0.10" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.1-pip", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/cuda:26.6": { + "version": "13.1", + "installcuBLAS": true, + "installcuDSS": true, + "installcuSOLVER": true, + "installcuRAND": true, + "installcuSPARSE": true + }, + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.6": {} + }, + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/ucx", + "ghcr.io/rapidsai/devcontainers/features/cuda", + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs}"], + "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", + "mounts": [ + "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", + "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index ff6960abf0..4768d3e469 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -33,6 +33,7 @@ jobs: - wheel-build-cuopt-mps-parser - wheel-build-cuopt-sh-client - test-self-hosted-server + - devcontainer secrets: inherit uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@main if: always() @@ -141,6 +142,7 @@ jobs: - '!.github/workflows/test.yaml' - '!.github/workflows/test_images.yaml' - '!.github/workflows/trigger-breaking-change-alert.yaml' + - '!.devcontainer/**' - '!.gitignore' - '!.pre-commit-config.yaml' - '!AGENTS.md' @@ -196,6 +198,7 @@ jobs: - '!.github/workflows/test.yaml' - '!.github/workflows/test_images.yaml' - '!.github/workflows/trigger-breaking-change-alert.yaml' + - '!.devcontainer/**' - '!.gitignore' - '!.pre-commit-config.yaml' - '!AGENTS.md' @@ -258,6 +261,7 @@ jobs: - '!.github/workflows/test.yaml' - '!.github/workflows/test_images.yaml' - '!.github/workflows/trigger-breaking-change-alert.yaml' + - '!.devcontainer/**' - '!.gitignore' - '!.pre-commit-config.yaml' - '!AGENTS.md' @@ -317,6 +321,7 @@ jobs: - '!.github/workflows/test.yaml' - '!.github/workflows/test_images.yaml' - '!.github/workflows/trigger-breaking-change-alert.yaml' + - '!.devcontainer/**' - '!.gitignore' - '!.pre-commit-config.yaml' - '!AGENTS.md' @@ -523,3 +528,18 @@ jobs: with: build_type: pull-request script: ci/test_self_hosted_service.sh + devcontainer: + secrets: inherit + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main + with: + arch: '["amd64", "arm64"]' + cuda: '["12.9", "13.1"]' + node_type: "cpu8" + env: | + SCCACHE_DIST_MAX_RETRIES=inf + SCCACHE_SERVER_LOG=sccache=debug + SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE=false + build_command: | + sccache --zero-stats; + build-all -j0 -DBUILD_MIP_BENCHMARKS=ON -DBUILD_LP_BENCHMARKS=ON --verbose 2>&1 | tee telemetry-artifacts/build.log; + sccache --show-adv-stats | tee telemetry-artifacts/sccache-stats.txt; diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 9a67bb65a5..62ee313b72 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -143,6 +143,14 @@ for FILE in .github/workflows/*.yaml; do sed_runner "s/:[0-9]*\\.[0-9]*-/:${NEXT_SHORT_TAG}-/g" "${FILE}" done +# .devcontainer files +find .devcontainer/ -type f -name devcontainer.json -print0 | while IFS= read -r -d '' filename; do + sed_runner "s@rapidsai/devcontainers:[0-9.]*@rapidsai/devcontainers:${NEXT_SHORT_TAG}@g" "${filename}" + sed_runner "s@rapidsai/devcontainers/features/cuda:[0-9.]*@rapidsai/devcontainers/features/cuda:${NEXT_SHORT_TAG_PEP440}@" "${filename}" + sed_runner "s@rapidsai/devcontainers/features/rapids-build-utils:[0-9.]*@rapidsai/devcontainers/features/rapids-build-utils:${NEXT_SHORT_TAG_PEP440}@" "${filename}" + sed_runner "s@rapids-\${localWorkspaceFolderBasename}-[0-9.]*@rapids-\${localWorkspaceFolderBasename}-${NEXT_SHORT_TAG}@g" "${filename}" +done + # Documentation references - context-aware if [[ "${RUN_CONTEXT}" == "main" ]]; then # In main context, keep external documentation on main (no changes needed) From ce8e9876dc253f9e83d9792f6ae995a244791129 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 30 Apr 2026 15:39:28 -0500 Subject: [PATCH 2/7] Fix benchmark devcontainer builds --- cpp/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 9fdcd3adac..7dd868fc53 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -739,6 +739,7 @@ if (BUILD_MIP_BENCHMARKS AND NOT BUILD_LP_ONLY) cuopt OpenMP::OpenMP_CXX PRIVATE + argparse::argparse ) if (NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "") target_link_options(solve_MIP PRIVATE -Wl,--enable-new-dtags) @@ -773,6 +774,7 @@ if (BUILD_LP_BENCHMARKS) cuopt OpenMP::OpenMP_CXX PRIVATE + argparse::argparse ) if (NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "") target_link_options(solve_LP PRIVATE -Wl,--enable-new-dtags) From 95dbb49fdabd08d1ed8e460c220692d8f388b179 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 1 May 2026 03:21:37 +0000 Subject: [PATCH 3/7] Fix CTest registration for cuOpt tests --- ci/run_ctests.sh | 20 +++---------- cpp/CMakeLists.txt | 5 +++- cpp/libmps_parser/tests/CMakeLists.txt | 2 ++ cpp/tests/CMakeLists.txt | 16 +++++----- cpp/tests/linear_programming/CMakeLists.txt | 17 ++++++----- .../linear_programming/grpc/CMakeLists.txt | 30 ++++--------------- 6 files changed, 33 insertions(+), 57 deletions(-) diff --git a/ci/run_ctests.sh b/ci/run_ctests.sh index fc1de8e1b4..320ba5c43a 100755 --- a/ci/run_ctests.sh +++ b/ci/run_ctests.sh @@ -8,12 +8,12 @@ set -euo pipefail # First, try the installed location (CI/conda environments) installed_test_location="${INSTALL_PREFIX:-${CONDA_PREFIX:-/usr}}/bin/gtests/libcuopt/" # Fall back to the build directory (devcontainer environments) -devcontainers_test_location="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../cpp/build/latest/gtests/libcuopt/" +devcontainers_test_location="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../cpp/build/latest" if [[ -d "${installed_test_location}" ]]; then - GTEST_DIR="${installed_test_location}" + cd "${installed_test_location}" elif [[ -d "${devcontainers_test_location}" ]]; then - GTEST_DIR="${devcontainers_test_location}" + cd "${devcontainers_test_location}" else echo "Error: Test location not found. Searched:" >&2 echo " - ${installed_test_location}" >&2 @@ -21,16 +21,4 @@ else exit 1 fi -for gt in "${GTEST_DIR}"/*_TEST; do - test_name=$(basename "${gt}") - echo "Running gtest ${test_name}" - "${gt}" "$@" -done - -# Run C_API_TEST with CPU memory for local solves (excluding time limit tests) -if [ -x "${GTEST_DIR}/C_API_TEST" ]; then - echo "Running gtest C_API_TEST with CUOPT_USE_CPU_MEM_FOR_LOCAL" - CUOPT_USE_CPU_MEM_FOR_LOCAL=1 "${GTEST_DIR}/C_API_TEST" --gtest_filter=-c_api/TimeLimitTestFixture.* "$@" -else - echo "Skipping C_API_TEST with CUOPT_USE_CPU_MEM_FOR_LOCAL (binary not found)" -fi +ctest --output-on-failure --no-tests=error "$@" diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 7dd868fc53..111ad0e69a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -252,11 +252,13 @@ FetchContent_Declare( ) find_package(TBB REQUIRED) -set(BUILD_TESTING OFF CACHE BOOL "Disable test build for papilo") +set(CUOPT_BUILD_TESTING ${BUILD_TESTING}) +set(BUILD_TESTING OFF) set(PAPILO_NO_BINARIES ON) option(LUSOL "Disable LUSOL" OFF) FetchContent_MakeAvailable(papilo) +set(BUILD_TESTING ${CUOPT_BUILD_TESTING}) # PSLP - Lightweight C presolver for linear programs # https://github.com/dance858/PSLP @@ -559,6 +561,7 @@ target_link_libraries(cuopt # - generate tests -------------------------------------------------------------------------------- if (BUILD_TESTS) include(CTest) + list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure") add_subdirectory(tests) endif (BUILD_TESTS) diff --git a/cpp/libmps_parser/tests/CMakeLists.txt b/cpp/libmps_parser/tests/CMakeLists.txt index 7de1739fac..10416669b9 100644 --- a/cpp/libmps_parser/tests/CMakeLists.txt +++ b/cpp/libmps_parser/tests/CMakeLists.txt @@ -3,6 +3,8 @@ # SPDX-License-Identifier: Apache-2.0 # cmake-format: on +enable_testing() + function(ConfigureTest CMAKE_TEST_NAME) add_executable(${CMAKE_TEST_NAME} ${ARGN}) diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index 4e225270b1..ffa92b704e 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -3,6 +3,11 @@ # SPDX-License-Identifier: Apache-2.0 # cmake-format: on +enable_testing() + +include(rapids-test) +rapids_test_init() + if(BUILD_TESTS) add_library(cuopttestutils STATIC routing/utilities/check_constraints.cu @@ -72,18 +77,11 @@ function(ConfigureTest CMAKE_TEST_NAME) target_link_options(${CMAKE_TEST_NAME} PRIVATE -Wl,--enable-new-dtags) endif() - add_test(NAME ${CMAKE_TEST_NAME} COMMAND ${CMAKE_TEST_NAME}) + rapids_test_add(NAME ${CMAKE_TEST_NAME} COMMAND ${CMAKE_TEST_NAME} GPUS 1 INSTALL_COMPONENT_SET testing) if(CT_LABELS) set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "${CT_LABELS}") endif() - - install( - TARGETS ${CMAKE_TEST_NAME} - COMPONENT testing - DESTINATION bin/gtests/libcuopt - EXCLUDE_FROM_ALL - ) endfunction() @@ -111,5 +109,5 @@ if(BUILD_TESTS) add_subdirectory(qp) add_subdirectory(utilities) - enable_testing() + rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing DESTINATION bin/gtests/libcuopt) endif() diff --git a/cpp/tests/linear_programming/CMakeLists.txt b/cpp/tests/linear_programming/CMakeLists.txt index a21918590a..f626d7d51e 100644 --- a/cpp/tests/linear_programming/CMakeLists.txt +++ b/cpp/tests/linear_programming/CMakeLists.txt @@ -64,14 +64,17 @@ if (NOT SKIP_C_PYTHON_ADAPTERS) target_link_options(C_API_TEST PRIVATE -Wl,--enable-new-dtags) endif() - add_test(NAME C_API_TEST COMMAND C_API_TEST) + rapids_test_add(NAME C_API_TEST COMMAND C_API_TEST GPUS 1 INSTALL_COMPONENT_SET testing) set_tests_properties(C_API_TEST PROPERTIES LABELS "numopt") - - install( - TARGETS C_API_TEST - COMPONENT testing - DESTINATION bin/gtests/libcuopt - EXCLUDE_FROM_ALL + rapids_test_add( + NAME C_API_TEST_CPU_MEM + COMMAND C_API_TEST + GPUS 1 + INSTALL_COMPONENT_SET testing + ) + set_tests_properties( + C_API_TEST_CPU_MEM + PROPERTIES LABELS "numopt" ENVIRONMENT "CUOPT_USE_CPU_MEM_FOR_LOCAL=1;GTEST_FILTER=-c_api/TimeLimitTestFixture.*" ) endif() diff --git a/cpp/tests/linear_programming/grpc/CMakeLists.txt b/cpp/tests/linear_programming/grpc/CMakeLists.txt index 74f15f5cfa..e640596573 100644 --- a/cpp/tests/linear_programming/grpc/CMakeLists.txt +++ b/cpp/tests/linear_programming/grpc/CMakeLists.txt @@ -34,16 +34,9 @@ if(NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "") target_link_options(GRPC_CLIENT_TEST PRIVATE -Wl,--enable-new-dtags) endif() -add_test(NAME GRPC_CLIENT_TEST COMMAND GRPC_CLIENT_TEST) +rapids_test_add(NAME GRPC_CLIENT_TEST COMMAND GRPC_CLIENT_TEST GPUS 1 INSTALL_COMPONENT_SET testing) set_tests_properties(GRPC_CLIENT_TEST PROPERTIES LABELS "numopt") -install( - TARGETS GRPC_CLIENT_TEST - COMPONENT testing - DESTINATION bin/gtests/libcuopt - EXCLUDE_FROM_ALL -) - # ################################################################################################## # - gRPC Pipe Serialization Unit Tests ------------------------------------------------------------- # These tests verify pipe serialization round-trips using real pipe(2) FDs. @@ -75,16 +68,9 @@ if(NOT DEFINED INSTALL_TARGET OR "${INSTALL_TARGET}" STREQUAL "") target_link_options(GRPC_PIPE_SERIALIZATION_TEST PRIVATE -Wl,--enable-new-dtags) endif() -add_test(NAME GRPC_PIPE_SERIALIZATION_TEST COMMAND GRPC_PIPE_SERIALIZATION_TEST) +rapids_test_add(NAME GRPC_PIPE_SERIALIZATION_TEST COMMAND GRPC_PIPE_SERIALIZATION_TEST GPUS 1 INSTALL_COMPONENT_SET testing) set_tests_properties(GRPC_PIPE_SERIALIZATION_TEST PROPERTIES LABELS "numopt") -install( - TARGETS GRPC_PIPE_SERIALIZATION_TEST - COMPONENT testing - DESTINATION bin/gtests/libcuopt - EXCLUDE_FROM_ALL -) - # ################################################################################################## # - gRPC Integration Tests ------------------------------------------------------------------------- # These tests start a real server process and run end-to-end tests @@ -118,17 +104,13 @@ endif() # Integration tests need the server binary to be built first add_dependencies(GRPC_INTEGRATION_TEST cuopt_grpc_server) -add_test( +rapids_test_add( NAME GRPC_INTEGRATION_TEST COMMAND ${CMAKE_COMMAND} -E env "CUOPT_GRPC_SERVER_PATH=$" $ + GPUS 1 + INSTALL_TARGET GRPC_INTEGRATION_TEST + INSTALL_COMPONENT_SET testing ) set_tests_properties(GRPC_INTEGRATION_TEST PROPERTIES LABELS "numopt") - -install( - TARGETS GRPC_INTEGRATION_TEST - COMPONENT testing - DESTINATION bin/gtests/libcuopt - EXCLUDE_FROM_ALL -) From 45f25426a7d8e946a07b6fbc97b13434e91cb437 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 1 May 2026 08:20:16 -0500 Subject: [PATCH 4/7] Remove dependency on 'file' command --- datasets/get_test_data.sh | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/datasets/get_test_data.sh b/datasets/get_test_data.sh index 528455e133..7749836556 100755 --- a/datasets/get_test_data.sh +++ b/datasets/get_test_data.sh @@ -221,15 +221,19 @@ set +e # Disable exit on error for the entire script for index in ${!DESTDIRS[*]}; do tfname=$(basename "${URLS[$index]}") + archive="tmp/${tfname}" - if file --mime-type "tmp/${tfname}" | grep -q gzip$; then - tar xvzf tmp/"${tfname}" -C "${DESTDIRS[$index]}" || true - elif file --mime-type "tmp/${tfname}" | grep -q zip$; then - unzip tmp/"${tfname}" -d "${DESTDIRS[$index]}" || true - else - tar xvf tmp/"${tfname}" -C "${DESTDIRS[$index]}" || true + if [ ! -f "${archive}" ]; then + echo "Missing download: ${archive}" + exit 1 fi + case "${tfname}" in + *.tar.gz|*.tgz) tar xvzf "${archive}" -C "${DESTDIRS[$index]}" || true ;; + *.zip) unzip "${archive}" -d "${DESTDIRS[$index]}" || true ;; + *) tar xvf "${archive}" -C "${DESTDIRS[$index]}" || true ;; + esac + if ls "${DESTDIRS[$index]}"/*.gz >/dev/null 2>&1; then gzip -d "${DESTDIRS[$index]}"/* || true fi From d5142a4e961054d852e2b994fc5cde8ee61a9dfb Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 1 May 2026 08:20:46 -0500 Subject: [PATCH 5/7] Only set up mps_parser if target is defined. --- python/cuopt/cuopt/linear_programming/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/python/cuopt/cuopt/linear_programming/CMakeLists.txt b/python/cuopt/cuopt/linear_programming/CMakeLists.txt index 3067b9ef37..84a799dbf6 100644 --- a/python/cuopt/cuopt/linear_programming/CMakeLists.txt +++ b/python/cuopt/cuopt/linear_programming/CMakeLists.txt @@ -56,11 +56,13 @@ rapids_cython_init() add_subdirectory(cuopt_mps_parser) add_subdirectory(data_model) -if(DEFINED cython_lib_dir) +if(TARGET mps_parser AND DEFINED cython_lib_dir) rapids_cython_add_rpath_entries(TARGET mps_parser PATHS "${cython_lib_dir}") endif() set(rpaths "$ORIGIN/../lib64" "$ORIGIN/../../rapids_logger/lib64" ) -set_property(TARGET mps_parser PROPERTY INSTALL_RPATH ${rpaths} APPEND) +if(TARGET mps_parser) + set_property(TARGET mps_parser PROPERTY INSTALL_RPATH ${rpaths} APPEND) +endif() From b5d0a30cc634c094c1ec994d264fbf732af3281b Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 1 May 2026 14:20:31 +0000 Subject: [PATCH 6/7] Fix local CTest environment defaults --- ci/run_ctests.sh | 7 ++++++- cpp/tests/mip/doc_example_test.cu | 4 +++- cpp/tests/utilities/CMakeLists.txt | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ci/run_ctests.sh b/ci/run_ctests.sh index 320ba5c43a..c70d629062 100755 --- a/ci/run_ctests.sh +++ b/ci/run_ctests.sh @@ -5,10 +5,15 @@ set -euo pipefail # Support customizing the gtests' install location +script_dir="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" +repo_dir="$(realpath "${script_dir}/..")" +export RAPIDS_DATASET_ROOT_DIR="${RAPIDS_DATASET_ROOT_DIR:-${repo_dir}/datasets}" +export CUOPT_HOME="${CUOPT_HOME:-${repo_dir}}" + # First, try the installed location (CI/conda environments) installed_test_location="${INSTALL_PREFIX:-${CONDA_PREFIX:-/usr}}/bin/gtests/libcuopt/" # Fall back to the build directory (devcontainer environments) -devcontainers_test_location="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/../cpp/build/latest" +devcontainers_test_location="${repo_dir}/cpp/build/latest" if [[ -d "${installed_test_location}" ]]; then cd "${installed_test_location}" diff --git a/cpp/tests/mip/doc_example_test.cu b/cpp/tests/mip/doc_example_test.cu index 9c3722ed5d..9d4544ef41 100644 --- a/cpp/tests/mip/doc_example_test.cu +++ b/cpp/tests/mip/doc_example_test.cu @@ -121,6 +121,7 @@ TEST(docs, user_problem_file) auto problem = create_doc_example_problem(); const auto user_problem_path = std::filesystem::temp_directory_path() / "user_problem.mps"; + std::filesystem::remove(user_problem_path); EXPECT_FALSE(std::filesystem::exists(user_problem_path)); settings.time_limit = test_time_limit; @@ -139,7 +140,8 @@ TEST(docs, user_problem_file) EXPECT_EQ(problem2.get_nnz(), problem.get_nnz()); const auto user_problem_path2 = std::filesystem::temp_directory_path() / "user_problem2.mps"; - settings.user_problem_file = user_problem_path2; + std::filesystem::remove(user_problem_path2); + settings.user_problem_file = user_problem_path2; mip_solution_t solution = solve_mip(&handle_, problem2, settings); EXPECT_EQ(solution.get_termination_status(), mip_termination_status_t::Optimal); diff --git a/cpp/tests/utilities/CMakeLists.txt b/cpp/tests/utilities/CMakeLists.txt index d0682e32a2..1c796660ae 100644 --- a/cpp/tests/utilities/CMakeLists.txt +++ b/cpp/tests/utilities/CMakeLists.txt @@ -6,3 +6,4 @@ # Add CLI end-to-end test ConfigureTest(CLI_TEST test_cli.cpp LABELS numopt) +set_tests_properties(CLI_TEST PROPERTIES ENVIRONMENT "PATH=$:$ENV{PATH}") From 3f8ba390f0cebe0bfecf3255c1126a4d718d2e9b Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 13 May 2026 16:09:06 -0500 Subject: [PATCH 7/7] Bump to CUDA 13.2 devcontainers and remove telemetry (not used in cuOpt) --- .../devcontainer.json | 8 ++++---- .../devcontainer.json | 12 ++++++------ .github/workflows/pr.yaml | 14 ++++++++++---- ...aarch64.yaml => all_cuda-132_arch-aarch64.yaml} | 4 ++-- ...h-x86_64.yaml => all_cuda-132_arch-x86_64.yaml} | 4 ++-- dependencies.yaml | 11 ++++++++++- 6 files changed, 34 insertions(+), 19 deletions(-) rename .devcontainer/{cuda13.1-conda => cuda13.2-conda}/devcontainer.json (91%) rename .devcontainer/{cuda13.1-pip => cuda13.2-pip}/devcontainer.json (88%) rename conda/environments/{all_cuda-131_arch-aarch64.yaml => all_cuda-132_arch-aarch64.yaml} (96%) rename conda/environments/{all_cuda-131_arch-x86_64.yaml => all_cuda-132_arch-x86_64.yaml} (96%) diff --git a/.devcontainer/cuda13.1-conda/devcontainer.json b/.devcontainer/cuda13.2-conda/devcontainer.json similarity index 91% rename from .devcontainer/cuda13.1-conda/devcontainer.json rename to .devcontainer/cuda13.2-conda/devcontainer.json index f3a622698d..7f970ff7f1 100644 --- a/.devcontainer/cuda13.1-conda/devcontainer.json +++ b/.devcontainer/cuda13.2-conda/devcontainer.json @@ -3,7 +3,7 @@ "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { - "CUDA": "13.1", + "CUDA": "13.2", "PYTHON_PACKAGE_MANAGER": "conda", "BASE": "rapidsai/devcontainers:26.06-cpp-mambaforge" } @@ -11,7 +11,7 @@ "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.1-conda", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.2-conda", "--ulimit", "nofile=500000" ], @@ -22,7 +22,7 @@ "overrideFeatureInstallOrder": [ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.1-envs}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.2-envs}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", @@ -31,7 +31,7 @@ "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.1-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.2-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" ], "customizations": { "vscode": { diff --git a/.devcontainer/cuda13.1-pip/devcontainer.json b/.devcontainer/cuda13.2-pip/devcontainer.json similarity index 88% rename from .devcontainer/cuda13.1-pip/devcontainer.json rename to .devcontainer/cuda13.2-pip/devcontainer.json index 7799ecd9c9..b74a649631 100644 --- a/.devcontainer/cuda13.1-pip/devcontainer.json +++ b/.devcontainer/cuda13.2-pip/devcontainer.json @@ -3,22 +3,22 @@ "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { - "CUDA": "13.1", + "CUDA": "13.2", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:26.06-cpp-cuda13.1-ucx1.19.0-openmpi5.0.10" + "BASE": "rapidsai/devcontainers:26.06-cpp-cuda13.2-ucx1.19.0-openmpi5.0.10" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.1-pip", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.06-cuda13.2-pip", "--ulimit", "nofile=500000" ], "hostRequirements": {"gpu": "optional"}, "features": { "ghcr.io/rapidsai/devcontainers/features/cuda:26.6": { - "version": "13.1", + "version": "13.2", "installcuBLAS": true, "installcuDSS": true, "installcuSOLVER": true, @@ -32,7 +32,7 @@ "ghcr.io/rapidsai/devcontainers/features/cuda", "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.2-venvs}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuopt,type=bind,consistency=consistent", @@ -40,7 +40,7 @@ "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", - "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.1-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.2-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" ], "customizations": { "vscode": { diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 2c443ea72b..f59382060f 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -633,11 +633,17 @@ jobs: build_type: pull-request script: ci/test_self_hosted_service.sh devcontainer: - secrets: inherit + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main with: arch: '["amd64", "arm64"]' - cuda: '["12.9", "13.1"]' + cuda: '["13.2"]' node_type: "cpu8" env: | SCCACHE_DIST_MAX_RETRIES=inf @@ -645,5 +651,5 @@ jobs: SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE=false build_command: | sccache --zero-stats; - build-all -j0 -DBUILD_MIP_BENCHMARKS=ON -DBUILD_LP_BENCHMARKS=ON --verbose 2>&1 | tee telemetry-artifacts/build.log; - sccache --show-adv-stats | tee telemetry-artifacts/sccache-stats.txt; + build-all -j0 -DBUILD_MIP_BENCHMARKS=ON -DBUILD_LP_BENCHMARKS=ON --verbose + sccache --show-adv-stats diff --git a/conda/environments/all_cuda-131_arch-aarch64.yaml b/conda/environments/all_cuda-132_arch-aarch64.yaml similarity index 96% rename from conda/environments/all_cuda-131_arch-aarch64.yaml rename to conda/environments/all_cuda-132_arch-aarch64.yaml index b1acfe1c4c..03e77ca5ba 100644 --- a/conda/environments/all_cuda-131_arch-aarch64.yaml +++ b/conda/environments/all_cuda-132_arch-aarch64.yaml @@ -18,7 +18,7 @@ dependencies: - cuda-nvtx-dev - cuda-python>=13.0.1,<14.0 - cuda-sanitizer-api -- cuda-version=13.1 +- cuda-version=13.2 - cudf==26.6.*,>=0.0.0a0 - cupy>=13.6.0 - cxx-compiler @@ -83,4 +83,4 @@ dependencies: - nvidia-sphinx-theme - swagger-plugin-for-sphinx - veroviz -name: all_cuda-131_arch-aarch64 +name: all_cuda-132_arch-aarch64 diff --git a/conda/environments/all_cuda-131_arch-x86_64.yaml b/conda/environments/all_cuda-132_arch-x86_64.yaml similarity index 96% rename from conda/environments/all_cuda-131_arch-x86_64.yaml rename to conda/environments/all_cuda-132_arch-x86_64.yaml index 3d4d03c85c..ffc94113e3 100644 --- a/conda/environments/all_cuda-131_arch-x86_64.yaml +++ b/conda/environments/all_cuda-132_arch-x86_64.yaml @@ -18,7 +18,7 @@ dependencies: - cuda-nvtx-dev - cuda-python>=13.0.1,<14.0 - cuda-sanitizer-api -- cuda-version=13.1 +- cuda-version=13.2 - cudf==26.6.*,>=0.0.0a0 - cupy>=13.6.0 - cxx-compiler @@ -83,4 +83,4 @@ dependencies: - nvidia-sphinx-theme - swagger-plugin-for-sphinx - veroviz -name: all_cuda-131_arch-x86_64 +name: all_cuda-132_arch-x86_64 diff --git a/dependencies.yaml b/dependencies.yaml index 68afb4f7f5..6e237c687c 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -7,7 +7,7 @@ files: all: output: conda matrix: - cuda: ["12.9", "13.1"] + cuda: ["12.9", "13.2"] arch: [x86_64, aarch64] includes: - build_common @@ -670,6 +670,10 @@ dependencies: cuda: "13.1" packages: - cuda-version=13.1 + - matrix: + cuda: "13.2" + packages: + - cuda-version=13.2 - output_types: requirements matrices: # if use_cuda_wheels=false is provided, do not add dependencies on any CUDA wheels @@ -715,6 +719,11 @@ dependencies: use_cuda_wheels: "true" packages: - cuda-toolkit==13.1.* + - matrix: + cuda: "13.2" + use_cuda_wheels: "true" + packages: + - cuda-toolkit==13.2.* cuda: common: - output_types: [conda]