Skip to content

Forward merge release/26.06 into main - #8138

Merged
csadorf merged 20 commits into
NVIDIA:mainfrom
csadorf:main-merge-release/26.06
May 22, 2026
Merged

Forward merge release/26.06 into main#8138
csadorf merged 20 commits into
NVIDIA:mainfrom
csadorf:main-merge-release/26.06

Conversation

@csadorf

@csadorf csadorf commented May 21, 2026

Copy link
Copy Markdown
Contributor

Manual no-squash forward merge of release/26.06 into main to unblock the conflicting ops-bot forward-merger.

Follow-up to #8116.

@coderabbitai ignore

jcrist and others added 15 commits May 15, 2026 16:58
This is required to import `libcuml`, but wasn't explicitly listed as a dependency. The parent main user-facing package (`cuml`) does have a `rmm` dependency, which in turn depends on `librmm`, so everything would be installed properly normally anyway. Just adding an explicit link here for tidyness.

Part of NVIDIA#7845.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: NVIDIA#8110
Our pipeline data transfer optimization didn't work if any of the steps were other compositional metaestimators that wrapped accelerated estimators (since these could then accidentally use the accelerated versions, resulting in a mix of `cupy` and `numpy` results).

This PR patches the other two compositional estimators (`FeatureUnion` and `ColumnTransformer`) so they always run within a `numpy` output-type context.

Fixes NVIDIA#8112.
Fixes a few sklearn examples as well (yay!)

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8115
This configures cupy to use the per-thread default stream (PTDS) for _most_ operations. This avoids usage of the default legacy stream in more of the codebase, allowing for improved parallelism when running across multiple threads.

**This is a breaking change.**

Previously any cupy operations in `cuml` ran in cupy's default stream (the legacy stream). We didn't synchronize the stream before returning, but that didn't matter due to the synchronization behavior of the legacy stream.

With this PR we've moved to running (most) cupy operations in the PTDS. Depending on the operation, we may not synchronize the PTDS before returning.

**Most users shouldn't notice a difference and should have no issues.**

Users not using threads, custom streams, or only working with host memory (e.g. numpy in/numpy out) should see no difference. Likewise any users that only use cupy's default stream (the legacy stream) in their code should see no issues.

Users doing tricky things with custom streams or threads may run into issues and require a manual sync of the PTDS (can be done with `cupy.cuda.Stream.ptds.synchronize()`. For example, the following workflow _may_ run into issues:

- Run a cuml operation based on cupy in thread A, returning a cupy array
- Consume that output in thread B as a cupy array using a stream other than the legacy stream (e.g. a different PTDS or a custom stream)

For safety, you probably want to add a call to `cupy.cuda.Stream.ptds.synchronize()` in thread A before returning to ensure the output array is fully populated before consuming it in thread B.

Fixes NVIDIA#7909.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)
  - Dante Gama Dessavre (https://github.com/dantegd)

URL: NVIDIA#8086
This adds to the cuml.accel documentation and documents the "third party application" use-case.

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

Approvers:
  - Jim Crist-Harif (https://github.com/jcrist)

URL: NVIDIA#8094
This:

- Bumps our minimum supported `numpy` version to 1.26, to match that of `cudf`. Since `cudf` is a required dependency, we were effectively pinned at that already.
- Adds `numpy` to our oldest deps test runs. This also effectively adds `cupy==13.6`, since `cupy==14` requires `numpy>=2.0`. Explicitly specifying `cupy==13.6` in an oldest-deps run is tricky since the pypi packages require cuda suffixes as well. I'm skipping that for now.
- Fixes a few incompatibilities with numpy 1.x

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Gil Forsyth (https://github.com/gforsyth)
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8118
Closes NVIDIA#8121

Proposes slightly reducing the threshold in the R-squared check for `MBSGDRegressor` tests.

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

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8122
This adds a cuml.accel example that illustrates the point that using cuml.accel makes it easier to do things because you aren't interrupted by things taking forever and forever.

It uses a simple pipeline that can be fully GPU accelerated and then searches a few hyper-parameter combinations for that pipeline.

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

Approvers:
  - Jim Crist-Harif (https://github.com/jcrist)

URL: NVIDIA#8095
This has started to fail. xfailing for now until the issue can be investigated.

Stopgap for NVIDIA#8125.

Fixes NVIDIA#8129.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8127
The dense version is already marked as flaky, but I've now seen the sparse version fail twice.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8130
This addresses failures in `python/cuml/tests` and `python/cuml/cuml_accel_tests` when run with the most recent sklearn 1.9 pre-release. With one small exception, this just required a few tweaks to some tests.

I did not address any failures when running the upstream sklearn test suite with `cuml.accel`, as that would require much deeper changes to setup xfails.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8126
- Updates `LabelBinarizer` to follow standard cuml and sklearn conventions (simple `__init__`, no mutation, type reflection, ...)
- Applies new validation
- Adds `sparse_input_` and `y_type_` attributes
- Improves validation and error messages
- Improves resilience and sklearn compatibility
- Improves test coverage
- Adds support for sklearn interop
- Adds support for cuml.accel
- Improves docstrings

This required one change to `cuml.internals.validation` around handling of unsupported dtypes for `cupyx.scipy.sparse`. This is split out into a separate commit with a new test case.

Part of NVIDIA#7317.
Fixes NVIDIA#8087.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8101
Closes NVIDIA#7982

Mirrors sklearn PR #32050 on cuml.SVC and cuml.LinearSVC. Sentinel + _effective_X property pattern, same as PR NVIDIA#7958. FutureWarning fires from fit when the user passes an explicit value.

Also fixes a latent bug in the accel proxy where _gpu_fit was reading self.probability truthily. Default SVC() on small data would have routed through the probability code path since the sentinel string is truthy.

Authors:
  - Steve Collins (https://github.com/switch527)
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Jim Crist-Harif (https://github.com/jcrist)

URL: NVIDIA#8089
This failure started after the recent CCCL upgrade and appears only on rtxpro6000 test runs. We relaxed the tolerance once already, but have still seen a rare periodic failure. From looking at recent failures, an atol of 5e-3 would be sufficient, but bumping to 1e-2 to be sure. We're only checking plumbing here, so some slop in tolerance is fine.

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Simon Adorf (https://github.com/csadorf)
  - Victor Lafargue (https://github.com/viclafargue)

URL: NVIDIA#8136
Adds `sklearn.decomposition.IncrementalPCA` to `cuml.accel`, including `fit_transform` and `partial_fit` dispatch through the estimator proxy.

This also tightens sklearn parity for cuML `IncrementalPCA` fitted attributes, CPU/GPU interop, `var_` handling, first-batch validation behavior, and `set_output` support.

Closes NVIDIA#7779

Authors:
  - John Zedlewski (https://github.com/JohnZed)
  - Simon Adorf (https://github.com/csadorf)

Approvers:
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#7785
@csadorf
csadorf requested review from a team as code owners May 21, 2026 14:18
@csadorf
csadorf requested a review from gforsyth May 21, 2026 14:18
@csadorf csadorf added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels May 21, 2026
@csadorf
csadorf requested a review from jcrist May 21, 2026 14:18
@copy-pr-bot

copy-pr-bot Bot commented May 21, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@review-notebook-app

This comment was marked as off-topic.

@github-actions github-actions Bot added conda conda issue Cython / Python Cython or Python issue labels May 21, 2026
@coderabbitai

This comment was marked as off-topic.

coderabbitai[bot]

This comment was marked as off-topic.

jcrist and others added 2 commits May 21, 2026 19:07
Adds a new doc with some advanced topics. Includes:

- CUDA streams and synchronization
- CUDA device selection
- A very small section on configuring RMM. I wanted to mention something, but not provide a full guide. Once the upstream RMM one lands we can link there.

xref NVIDIA#8128

Authors:
  - Jim Crist-Harif (https://github.com/jcrist)

Approvers:
  - Gil Forsyth (https://github.com/gforsyth)
  - Simon Adorf (https://github.com/csadorf)

URL: NVIDIA#8134
Adopts `nvForest` for cuML random forest inference, removes the in-tree FIL implementation, and keeps a deprecated `cuml.fil` compatibility layer that directs users to `nvforest.ForestInference`.

This also wires `nvForest` into the C++ and Python build paths, updates packaging dependencies, and preserves the existing `cuml.fil.ForestInference` entry point with deprecation warnings for users migrating from FIL.

Authors:
  - Philip Hyunsu Cho (https://github.com/hcho3)
  - Simon Adorf (https://github.com/csadorf)

Approvers:
  - Simon Adorf (https://github.com/csadorf)
  - Jim Crist-Harif (https://github.com/jcrist)
  - Bradley Dice (https://github.com/bdice)

URL: NVIDIA#8048
@csadorf

This comment has been minimized.

@csadorf

This comment has been minimized.

@csadorf

csadorf commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test e00763d

@csadorf
csadorf merged commit 30e06bf into NVIDIA:main May 22, 2026
102 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CMake conda conda issue CUDA/C++ 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.

9 participants