Skip to content

Adopt CUDA stream compatibility accessors - #23995

Open
bdice wants to merge 3 commits into
NVIDIA:release/26.10from
bdice:cuda-stream-ref-prep
Open

Adopt CUDA stream compatibility accessors#23995
bdice wants to merge 3 commits into
NVIDIA:release/26.10from
bdice:cuda-stream-ref-prep

Conversation

@bdice

@bdice bdice commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Description

Use the get() compatibility alias added in RMM #2537. This spelling is shared by rmm::cuda_stream_view and cuda::stream_ref.

This preserves existing stream types and public APIs while extracting mechanical accessor updates from the broader stream migration. It is independently buildable without RMM #2372 and leaves the migration PR focused on actual type and signature changes.

This updates raw stream extraction at Cython boundaries and uses the CUDA stream umbrella header where stream definitions are required, without changing libcudf stream types or public APIs. The remaining type, construction, and forwarding changes stay in cuDF #23929.

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@copy-pr-bot

copy-pr-bot Bot commented Sep 5, 2026

Copy link
Copy Markdown

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.

@github-actions github-actions Bot added libcudf Affects libcudf (C++/CUDA) code. Python Affects Python cuDF API. pylibcudf Issues specific to the pylibcudf package labels Sep 5, 2026
@bdice
bdice force-pushed the cuda-stream-ref-prep branch from d606153 to 920fca8 Compare September 6, 2026 14:30
@github-actions github-actions Bot added the Java Affects Java cuDF API. label Sep 6, 2026
@bdice
bdice force-pushed the cuda-stream-ref-prep branch from 920fca8 to ac9f158 Compare September 7, 2026 01:07
@bdice
bdice changed the base branch from main to release/26.10 September 8, 2026 19:59
@bdice bdice added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Sep 8, 2026
@bdice
bdice marked this pull request as ready for review September 8, 2026 20:15
@bdice
bdice requested review from a team as code owners September 8, 2026 20:15
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 30bebed7-82be-47b0-9f7c-4f2966ecf71c

📥 Commits

Reviewing files that changed from the base of the PR and between 53cb247 and ac9f158.

📒 Files selected for processing (104)
  • cpp/include/cudf/detail/utilities/default_stream.hpp
  • cpp/include/cudf/join/streaming_hash_join.hpp
  • cpp/include/cudf/utilities/default_stream.hpp
  • cpp/libcudf_streaming/src/bloom_filter.cpp
  • cpp/src/io/parquet/synthetic_column_helpers.hpp
  • cpp/src/join/streaming_hash_join.cu
  • cpp/src/utilities/host_memory.cpp
  • cpp/tests/join/streaming_hash_join_tests.cpp
  • cpp/tests/scalar/scalar_test.cpp
  • java/src/main/native/include/maps_column_view.hpp
  • java/src/main/native/src/ColumnViewJni.hpp
  • java/src/main/native/src/RmmJni.cpp
  • java/src/main/native/src/aggregation128_utils.hpp
  • java/src/main/native/src/check_nvcomp_output_sizes.hpp
  • python/cudf_streaming/cudf_streaming/partition_utils.pyx
  • python/cudf_streaming/cudf_streaming/table_chunk.pyx
  • python/pylibcudf/pylibcudf/binaryop.pyx
  • python/pylibcudf/pylibcudf/column.pyx
  • python/pylibcudf/pylibcudf/column_factories.pyx
  • python/pylibcudf/pylibcudf/concatenate.pyx
  • python/pylibcudf/pylibcudf/contiguous_split.pyx
  • python/pylibcudf/pylibcudf/copying.pyx
  • python/pylibcudf/pylibcudf/datetime.pyx
  • python/pylibcudf/pylibcudf/experimental/_join_streams.pyx
  • python/pylibcudf/pylibcudf/filling.pyx
  • python/pylibcudf/pylibcudf/groupby.pyx
  • python/pylibcudf/pylibcudf/hashing.pyx
  • python/pylibcudf/pylibcudf/interop.pyx
  • python/pylibcudf/pylibcudf/io/avro.pyx
  • python/pylibcudf/pylibcudf/io/csv.pyx
  • python/pylibcudf/pylibcudf/io/experimental/hybrid_scan.pyx
  • python/pylibcudf/pylibcudf/io/json.pyx
  • python/pylibcudf/pylibcudf/io/orc.pyx
  • python/pylibcudf/pylibcudf/io/parquet.pyx
  • python/pylibcudf/pylibcudf/io/parquet_io_utils.pyx
  • python/pylibcudf/pylibcudf/io/parquet_metadata.pyx
  • python/pylibcudf/pylibcudf/io/text.pyx
  • python/pylibcudf/pylibcudf/io/timezone.pyx
  • python/pylibcudf/pylibcudf/join.pyx
  • python/pylibcudf/pylibcudf/json.pyx
  • python/pylibcudf/pylibcudf/labeling.pyx
  • python/pylibcudf/pylibcudf/libcudf/detail/utilities/stream_pool.pxd
  • python/pylibcudf/pylibcudf/lists.pyx
  • python/pylibcudf/pylibcudf/merge.pyx
  • python/pylibcudf/pylibcudf/null_mask.pyx
  • python/pylibcudf/pylibcudf/nvtext/byte_pair_encode.pyx
  • python/pylibcudf/pylibcudf/nvtext/deduplicate.pyx
  • python/pylibcudf/pylibcudf/nvtext/edit_distance.pyx
  • python/pylibcudf/pylibcudf/nvtext/generate_ngrams.pyx
  • python/pylibcudf/pylibcudf/nvtext/jaccard.pyx
  • python/pylibcudf/pylibcudf/nvtext/minhash.pyx
  • python/pylibcudf/pylibcudf/nvtext/ngrams_tokenize.pyx
  • python/pylibcudf/pylibcudf/nvtext/normalize.pyx
  • python/pylibcudf/pylibcudf/nvtext/replace.pyx
  • python/pylibcudf/pylibcudf/nvtext/stemmer.pyx
  • python/pylibcudf/pylibcudf/nvtext/tokenize.pyx
  • python/pylibcudf/pylibcudf/nvtext/unicode_normalize.pyx
  • python/pylibcudf/pylibcudf/nvtext/wordpiece_tokenize.pyx
  • python/pylibcudf/pylibcudf/partitioning.pyx
  • python/pylibcudf/pylibcudf/quantiles.pyx
  • python/pylibcudf/pylibcudf/reduce.pyx
  • python/pylibcudf/pylibcudf/replace.pyx
  • python/pylibcudf/pylibcudf/reshape.pyx
  • python/pylibcudf/pylibcudf/rolling.pyx
  • python/pylibcudf/pylibcudf/round.pyx
  • python/pylibcudf/pylibcudf/scalar.pyx
  • python/pylibcudf/pylibcudf/search.pyx
  • python/pylibcudf/pylibcudf/sorting.pyx
  • python/pylibcudf/pylibcudf/stream_compaction.pyx
  • python/pylibcudf/pylibcudf/strings/attributes.pyx
  • python/pylibcudf/pylibcudf/strings/capitalize.pyx
  • python/pylibcudf/pylibcudf/strings/case.pyx
  • python/pylibcudf/pylibcudf/strings/char_types.pyx
  • python/pylibcudf/pylibcudf/strings/combine.pyx
  • python/pylibcudf/pylibcudf/strings/contains.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_booleans.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_datetime.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_durations.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_fixed_point.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_floats.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_integers.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_ipv4.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_lists.pyx
  • python/pylibcudf/pylibcudf/strings/convert/convert_urls.pyx
  • python/pylibcudf/pylibcudf/strings/extract.pyx
  • python/pylibcudf/pylibcudf/strings/find.pyx
  • python/pylibcudf/pylibcudf/strings/find_multiple.pyx
  • python/pylibcudf/pylibcudf/strings/findall.pyx
  • python/pylibcudf/pylibcudf/strings/padding.pyx
  • python/pylibcudf/pylibcudf/strings/repeat.pyx
  • python/pylibcudf/pylibcudf/strings/replace.pyx
  • python/pylibcudf/pylibcudf/strings/replace_re.pyx
  • python/pylibcudf/pylibcudf/strings/reverse.pyx
  • python/pylibcudf/pylibcudf/strings/slice.pyx
  • python/pylibcudf/pylibcudf/strings/split/partition.pyx
  • python/pylibcudf/pylibcudf/strings/split/split.pyx
  • python/pylibcudf/pylibcudf/strings/strip.pyx
  • python/pylibcudf/pylibcudf/strings/translate.pyx
  • python/pylibcudf/pylibcudf/strings/wrap.pyx
  • python/pylibcudf/pylibcudf/table.pyx
  • python/pylibcudf/pylibcudf/table_equality.pyx
  • python/pylibcudf/pylibcudf/transform.pyx
  • python/pylibcudf/pylibcudf/transpose.pyx
  • python/pylibcudf/pylibcudf/unary.pyx

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


📝 Summary

Summary by CodeRabbit

  • Compatibility
    • Updated CUDA stream integration across C++, Python, and Java components to use current stream headers and accessors.
    • Maintained existing APIs and data-processing behavior across joins, I/O, strings, aggregations, and other operations.
  • Reliability
    • Improved compatibility with newer CUDA stream interfaces throughout the library.

Walkthrough

The pull request replaces deprecated CUDA stream headers and .value() stream-handle access with <cuda/stream> and .get() across native code and Python bindings.

Changes

CUDA stream API migration

Layer / File(s) Summary
Native stream headers and call sites
cpp/..., java/src/main/native/...
Native headers now include <cuda/stream>. Native stream-handle retrieval uses get().
Core Python binding stream access
python/cudf_streaming/..., python/pylibcudf/pylibcudf/*.pyx, python/pylibcudf/pylibcudf/io/*, python/pylibcudf/pylibcudf/join.pyx
Python bindings now pass CUDA stream handles obtained through view().get() to libcudf operations.
nvtext and string binding stream access
python/pylibcudf/pylibcudf/nvtext/*, python/pylibcudf/pylibcudf/strings/*
nvtext and string bindings use get() for operation streams and default scalar construction.
Stream-related tests and wrappers
cpp/tests/*, python/pylibcudf/pylibcudf/libcudf/detail/utilities/stream_pool.pxd
Tests and embedded C++ declarations use the updated CUDA stream header and accessor.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Refactor

Merge Risk: ⚪ Minimal · up to ac9f1

This change updates CUDA stream handle extraction to the compatible get() accessor and replaces deprecated stream headers without changing public APIs or stream selection. No concrete current-head merge risk remains.

Possibly related PRs

  • NVIDIA/cudf#23929: Continues the same CUDA stream API migration across related headers and call sites.

Suggested reviewers: vyasr, mroeschke

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 14 files. (90 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adopting CUDA stream compatibility accessors.
Description check ✅ Passed The description directly explains the get() accessor updates, CUDA header changes, preserved APIs, and relationship to the broader stream migration.
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: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 14 files. (90 skipped: 90 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improvement / enhancement to an existing function Java Affects Java cuDF API. libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change pylibcudf Issues specific to the pylibcudf package Python Affects Python cuDF API.

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant