Skip to content

Forward-merge release/26.12 into main - #281

Merged
chyunsu3 merged 2 commits into
rapidsai:mainfrom
chyunsu3:main-merge-release/26.12
Nov 12, 2026
Merged

chyunsu3 merged 2 commits into
rapidsai:mainfrom
chyunsu3:main-merge-release/26.12

Conversation

@chyunsu3

Copy link
Copy Markdown
Contributor

See #279

betatim and others added 2 commits November 12, 2026 21:41
Depend on cuda-core[cu12]/[cu13] in the respective wheel.

cuda-core 1.3.0 (released 2026-11-11) refuses to import unless cuda-bindings meets a minimum version (>=12.9.8 for CUDA 12, >=13.5.0 for CUDA 13). Its metadata declares that minimum only under the `cu12`/`cu13` extras. nvforest wheels depend on plain `cuda-core`, so pip can install cuda-core 1.3.0 next to an older cuda-bindings, and then `import cuda.core` fails:

```text
ImportError: cuda.core 1.3.0 requires cuda-bindings >= 12.9.8 for CUDA 12, but cuda-bindings 12.9.3 is installed.
```

This breaks cuML's nightly wheel tests in two ways:
- In the oldest-deps jobs, cuML pins `cuda-bindings==12.9.3`.
- In the CUDA 12 integrations job, `torch==2.10.0+cu129` pins `cuda-bindings==12.9.4`.

Examples:
- https://github.com/NVIDIA/cuml/actions/runs/43171195643/job/131024721358
- https://github.com/NVIDIA/cuml/actions/runs/43171195643/job/131024702175

This PR makes the wheels depend on `cuda-core[cu12]` / `cuda-core[cu13]`, so pip sees the minimum and falls back to cuda-core 1.2.x (the version before what was just released) when cuda-bindings is pinned below 12..9.8. dask-cuda already does this, and cuML's oldest-deps dask job, which gets cuda-core through dask-cuda, resolved cuda-core 1.2.2 and passed.

We could bump the cuda-binding in the oldest job instead, but we'd still be stuck for CUDA 12 in general I think (because pytorch pins things exactly).

I think with this we get the "best of all worlds" where you get the newer cuda-core if there is nothing in your env that keeps cuda-bindings pinned low. And if there is you get the older version of cuda-core. I don't know what the downside of sometimes having cuda-core 1.2.x and sometimes having 1.3.0 is.

One downside is that through `cuda-bindings[all]`, the extra also installs the nvcc, nvrtc, nvjitlink and cufile wheels. This isn't great but for cuml these would anyway get installed.

Authors:
  - Tim Head (https://github.com/betatim)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: rapidsai#277
@chyunsu3
chyunsu3 requested a review from a team as a code owner November 12, 2026 22:31
@chyunsu3 chyunsu3 added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Nov 12, 2026
@coderabbitai

coderabbitai Bot commented Nov 12, 2026

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • Bug Fixes
    • CUDA dependency selection now follows the configured CUDA version in requirements and project metadata: CUDA 12 selects the CUDA 12 package, while other or unspecified versions select the CUDA 13 package.
    • Disabling CUDA wheels selects the base package for these outputs.
    • Conda and constraints outputs continue to use the base package.

The dependency rules now select the base cuda-core package or its cu12 or cu13 extra for requirements and pyproject outputs, based on configuration. The nvforest project dependency now requests the cu13 extra.

Changes: CUDA core dependency selection

Layer / File(s) Summary
CUDA-specific dependency outputs
dependencies.yaml, python/nvforest/pyproject.toml
For requirements and pyproject outputs, the rules select the base package when use_cuda_wheels is "false", the cu12 extra for CUDA 12, and the cu13 extra otherwise. The nvforest dependency now requests the cu13 extra. The version range is unchanged.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Possibly related PRs

  • rapidsai/nvforest#277: Changes the same cuda-core output rules and the nvforest dependency to use the cu13 extra.
  • rapidsai/nvforest#193: Adds the depends_on_cuda_core group and changes the nvforest dependency line touched here.

Suggested reviewers: msarahan, bdice

Merge Risk: Minimal · up to 26027

This change makes the wheels depend on the CUDA-version-specific cuda-core extras so pip can resolve compatible cuda-bindings versions. No concrete merge-blocking risk was identified.

Pre-merge checks: Passed 2 · Inconclusive 2

Failed Failed checks: 2 inconclusive

Check name Status Explanation Resolution
Title check Inconclusive The title names a forward-merge of release/26.12 into main, which is a real and specific operation. It does not describe the content of the merge. The raw summary shows the merged change makes the cud… Rewrite the title to name the main change, for example: "Select cuda-core cu12 or cu13 extra by CUDA version". Alternatively, keep the merge wording and add the main change, for example: "Forward-merge release/26.12 into main: use cuda-core…
Description check Inconclusive The description reads "See #279" and gives no detail about the changeset. It refers to another issue number, which is related to the merge, but it does not describe any part of the change. The check i… Add a short description of the changes. Name the affected files (dependencies.yaml and python/nvforest/pyproject.toml) and state the purpose, for example: cuda-core now selects the cu12 or cu13 extra based on the cuda setting, so pip resolv…
Passed Passed checks: 2 passed

Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names a forward-merge of release/26.12 into main, which is a real and specific operation. It does not describe the content of the merge. The raw summary shows the merged change makes the cuda-core dependency select CUDA-version-specific extras (cu12/cu13) in requirements and pyproject outputs, so the title does not name the main technical change. The title is partially related because it identifies the merge, but it is not a clear summary of the primary change.

Resolution

Rewrite the title to name the main change, for example: "Select cuda-core cu12 or cu13 extra by CUDA version". Alternatively, keep the merge wording and add the main change, for example: "Forward-merge release/26.12 into main: use cuda-core CUDA-specific extras".

Full details: Description check

Explanation

The description reads "See #279" and gives no detail about the changeset. It refers to another issue number, which is related to the merge, but it does not describe any part of the change. The check is lenient, but the text is too vague to confirm relevance on its own. The objectives section links the PR to #279 but does not state what #279 covers.

Resolution

Add a short description of the changes. Name the affected files (dependencies.yaml and python/nvforest/pyproject.toml) and state the purpose, for example: cuda-core now selects the cu12 or cu13 extra based on the cuda setting, so pip resolves compatible cuda-bindings versions.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 3ccb8c9 and 26027d2.

Files selected for processing: 2

  • dependencies.yaml
  • python/nvforest/pyproject.toml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

@chyunsu3

Copy link
Copy Markdown
Contributor Author

/merge nosquash

@chyunsu3
chyunsu3 merged commit 9b7b42d into rapidsai:main Nov 12, 2026
58 checks passed
@chyunsu3
chyunsu3 deleted the main-merge-release/26.12 branch November 12, 2026 23:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Cython / Python improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants