Skip to content

build wheels with CUDA 13.0.x, test wheels against mix of CTK versions#7907

Merged
rapids-bot[bot] merged 10 commits intorapidsai:release/26.04from
jameslamb:test-older-ctk
Mar 19, 2026
Merged

build wheels with CUDA 13.0.x, test wheels against mix of CTK versions#7907
rapids-bot[bot] merged 10 commits intorapidsai:release/26.04from
jameslamb:test-older-ctk

Conversation

@jameslamb
Copy link
Copy Markdown
Member

@jameslamb jameslamb commented Mar 18, 2026

Contributes to rapidsai/build-planning#257

  • builds CUDA 13 wheels with the 13.0 CTK
  • ensures wheels ship with a runtime dependency of nvidia-nvjitlink>={whatever-minor-version-they-were-built-against}

Contributes to rapidsai/build-planning#256

  • updates wheel tests to cover a range of CTK versions (we previously, accidentally, were only testing the latest 12.x and 13.x)

Notes for Reviewers

Doesn't this need conda changes too?

I don't think so.

cuML doesn't directly use libnvjitlink in conda packages, and it dynamically links to libcuvs:

option(CUML_USE_CUVS_STATIC "Build and statically link the CUVS library" OFF)

https://github.com/rapidsai/cuml/blob/main/conda/recipes/libcuml/recipe.yaml#L118-L126

Wheels need a runtime dependency on nvidia-nvjitlink because they statically link cuVS:

set(CUML_USE_CUVS_STATIC ON)

@jameslamb jameslamb added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Mar 18, 2026
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot bot commented Mar 18, 2026

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@jameslamb jameslamb changed the title WIP: build wheels with CUDA 13.0.x, test wheels against mix of CTK versions build wheels with CUDA 13.0.x, test wheels against mix of CTK versions Mar 18, 2026
@jameslamb jameslamb requested a review from divyegala March 18, 2026 17:38
@jameslamb jameslamb marked this pull request as ready for review March 18, 2026 17:39
@jameslamb jameslamb requested review from a team as code owners March 18, 2026 17:39
@jameslamb jameslamb requested a review from msarahan March 18, 2026 17:39
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 18, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 004c79f2-e11c-4e7c-9089-20758920ae3f

📥 Commits

Reviewing files that changed from the base of the PR and between af81dc5 and a6fb39b.

📒 Files selected for processing (3)
  • dependencies.yaml
  • python/cuml/pyproject.toml
  • python/libcuml/pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (2)
  • python/libcuml/pyproject.toml
  • dependencies.yaml

📝 Walkthrough

Summary by CodeRabbit

  • Chores

    • CI/build now sources install constraints from an environment variable and consolidates constraint usage.
    • Pip installs prefer binary wheels and simplify test extras handling.
  • Dependencies

    • Separated nvjitlink into its own dependency and pinned CUDA toolkit to 13.* where applicable.
    • Added explicit support matrix for additional CUDA versions (12.2–13.1) with improved architecture-specific handling.

Walkthrough

Replace local constraint files with an environment-provided PIP_CONSTRAINT, add --prefer-binary to several pip installs, split nvjitlink out of cuda-toolkit into a separate nvidia-nvjitlink dependency, and expand/explicitly pin CUDA-version matrices in dependencies.yaml.

Changes

Cohort / File(s) Summary
CI test scripts
ci/test_wheel.sh, ci/test_wheel_dask.sh, ci/test_wheel_integrations.sh
Switch constraint sourcing from ./constraints.txt to the PIP_CONSTRAINT environment variable; add --prefer-binary to pip install commands; simplify extras usage (e.g., use [test]) and consolidate constraint flags.
Dependency matrix
dependencies.yaml
Introduce explicit CUDA minor-version entries (12.2, 12.5, 12.8, 12.9, 13.0, 13.1) and use_cuda_wheels selector branches; pin cuda-toolkit per-version selectors and add explicit nvidia-nvjitlink requirements where appropriate; document selector behavior and nvJitLink ↔ CTK minor-version relationship.
Project manifests
python/cuml/pyproject.toml, python/libcuml/pyproject.toml
Remove nvjitlink from cuda-toolkit[...] extras and change cuda-toolkit constraint to ==13.*; add a separate top-level dependency nvidia-nvjitlink>=13.0,<14 (aligning nvjitlink versioning with CTK 13.x).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

CUDA/C++

Suggested reviewers

  • gforsyth
  • bdice
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main changes: building wheels with CUDA 13.0.x and testing them against multiple CTK versions, which aligns with the changeset.
Description check ✅ Passed The description provides clear context for the changes: CUDA 13 wheel building, nvjitlink runtime dependencies, and expanded CTK version testing, all matching the actual changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ci/test_wheel_integrations.sh`:
- Line 33: The BERTopic install call using the command "rapids-pip-retry install
--prefer-binary bertopic" omits the pip constraint that other wheel tests use;
either append the constraint flag (--constraint "${PIP_CONSTRAINT}") to that
install invocation so it uses the same generated constraints, or add a short
inline comment above the "rapids-pip-retry install --prefer-binary bertopic"
line explaining why constraints are intentionally excluded for this integration
test (and reference that PIP_CONSTRAINT is set by rapids-init-pip) so the
deviation is explicit and auditable.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ddae4d85-e5cf-4f8a-a961-c0b0f6a7c7d2

📥 Commits

Reviewing files that changed from the base of the PR and between 5a00a4d and af81dc5.

📒 Files selected for processing (6)
  • ci/test_wheel.sh
  • ci/test_wheel_dask.sh
  • ci/test_wheel_integrations.sh
  • dependencies.yaml
  • python/cuml/pyproject.toml
  • python/libcuml/pyproject.toml

packages:
# if no matching matrix selectors passed, list the unsuffixed packages
- &cuda_toolkit_any_cu13 cuda-toolkit[cublas,cufft,curand,cusolver,cusparse]==13.*
- nvidia-nvjitlink>=13.0,<14
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The solver does not find an issue with this vs the tight pinning in the cudatoolkit metapackage?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, if the environment doesn't have requirement cuda-toolkit[nvjitlink] anywhere, then cuda-toolkit's == pin on nvidia-nvjitlink doesn't matter.

If someone were to pin cuda-toolkit[nvjitlink]=={specific-version} that's also find, as long as {specific-version}>=13.0 (taking advantage of the fact the nvJitLink major.minor happens to follow the CTK's major.minor).

@jameslamb
Copy link
Copy Markdown
Member Author

/merge

@rapids-bot rapids-bot bot merged commit c181a14 into rapidsai:release/26.04 Mar 19, 2026
188 of 190 checks passed
@jameslamb jameslamb deleted the test-older-ctk branch March 19, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Cython / Python Cython or Python issue improvement Improvement / enhancement to an existing function non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants