Skip to content

Create new libcudf_streaming C++ library - #22747

Merged
rapids-bot[bot] merged 36 commits into
NVIDIA:mainfrom
vyasr:branch-cudf-streaming-cpp
Jun 4, 2026
Merged

Create new libcudf_streaming C++ library#22747
rapids-bot[bot] merged 36 commits into
NVIDIA:mainfrom
vyasr:branch-cudf-streaming-cpp

Conversation

@vyasr

@vyasr vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Description

This PR ports over the libcudf-specific components of librapidsmpf into a new C++ library inside this repository that depends on librapidsmpf.

Contributes to #22528

Checklist

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

@vyasr vyasr self-assigned this Jun 2, 2026
@vyasr vyasr added feature request New feature or request non-breaking Non-breaking change labels Jun 2, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 2, 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.

@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

@github-actions github-actions Bot added libcudf Affects libcudf (C++/CUDA) code. Python Affects Python cuDF API. CMake CMake build issue labels Jun 2, 2026
@GPUtester GPUtester moved this to In Progress in cuDF Python Jun 2, 2026
@github-actions github-actions Bot added the cudf-polars Issues specific to cudf-polars label Jun 2, 2026
@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

1 similar comment
@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

@vyasr
vyasr force-pushed the branch-cudf-streaming-cpp branch from f47f5fa to f11245f Compare June 2, 2026 15:17
@copy-pr-bot

copy-pr-bot Bot commented Jun 2, 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.

@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

@copy-pr-bot

copy-pr-bot Bot commented Jun 2, 2026

Copy link
Copy Markdown

/ok to test

@vyasr, there was an error processing your request: E1

See the following link for more information: https://docs.gha-runners.nvidia.com/cpr/e/1/

@vyasr
vyasr force-pushed the branch-cudf-streaming-cpp branch from f11245f to 5b4e206 Compare June 2, 2026 15:20
@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

@madsbk madsbk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good

[[nodiscard]] void* data() noexcept;

/**
* @brief @return Cnst Pointer to the underlying storage.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
* @brief @return Cnst Pointer to the underlying storage.
* @brief @return Const Pointer to the underlying storage.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

Comment thread ci/test_cpp.sh Outdated
if (( SUITEERROR == 0 )); then
rapids-logger "Run libcudf examples"
timeout 30m ./ci/run_cudf_examples.sh
timeout 5m ./ci/run_cudf_examples.sh

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Are the timeout reductions really intentional here? From my experience with CI, there's high variability and I'd suggest being wary.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fair point. I think it's safe based on what I've seen, but happy to revisit after this PR. Reverted to 30m for now.

NAME cudf_streaming_single_tests
COMMAND cudf_streaming_single_tests
GPUS 1
PERCENT 25

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why is this needed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It's to allow for test parallelism (rapids_test_add uses PERCENT to determine how many tests can run concurrently based on GPU resource allocation). But for now I've set it to 100 to disable that, since we don't have enough tests to benefit from parallelism yet.

@nirandaperera nirandaperera left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we can (and should) remove single communicator from the tests.

#include <cstdint>
#include <memory>

namespace cudf_streaming::integrations {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm wondering if this integrations ns is required or not. Previously, cudf was one integration to rapidsmpf. But in cudf_streaming, I feel like this is not really necessary. 😇

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I agree, but I want the initial set of PRs to be as close to a copy of the rapidsmpf code as possible because 1) we should move quickly since rapidsmpf development is fully paused until these PRs merged and 2) these PRs are huge and hard to review and I'd rather have meaningful changes done in follow-up PRs that are smaller in scope and reasonable to review.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Tracking in #22771

Comment on lines +10 to +11
#include <rapidsmpf/communicator/single.hpp>
#include <rapidsmpf/progress_thread.hpp>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

So, cudf_streaming tests depend on rapidsmpf?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes

@@ -0,0 +1,45 @@
/**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I doubt we would need a custom test Environment for these tests. We might not even need rapidsmpf or the Single Communicator. Because these tests might not be passing messages around. (Do they?)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure, you would know better than me. But as above, I'd prefer for this PR to be a faithful upstreaming of rapidsmpf code and to defer this type of improvement to a follow-up PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Tracking in #22771

- Fix typo in bloom_filter.hpp doxygen (Cnst -> Const)
- Revert timeout reductions in test_cpp.sh back to 30m
- Set PERCENT 100 for cudf_streaming tests (disable parallelism for now)
- Add note to libcudf_streaming README that most users need not install directly
@vyasr

vyasr commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test

@pentschev pentschev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks Vyas!

@bdice bdice left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed packaging / CMake changes again. Minor comments/questions, please address as you see fit. Thanks!

Comment thread ci/release/update-version.sh Outdated
Comment thread ci/build_wheel_libcudf_streaming.sh
Comment thread ci/test_cpp.sh

if (( SUITEERROR == 0 )); then
rapids-logger "Run libcudf_streaming gtests"
timeout 30m ./ci/run_cudf_streaming_ctests.sh -j20

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Should we reduce the timeout, then?

Comment thread conda/recipes/libcudf/recipe.yaml Outdated
vyasr added 2 commits June 3, 2026 21:28
Rename conda package from libcudf_streaming to libcudf-streaming to
follow the convention used by cudf-polars and dask-cudf. Also remove
the now-unnecessary entry from the version update script.
@vyasr
vyasr dismissed nirandaperera’s stale review June 3, 2026 22:04

I addressed these reviews and Niranda gave the OK offline.

@nirandaperera nirandaperera left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@vyasr

vyasr commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit fbe9799 into NVIDIA:main Jun 4, 2026
122 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Jun 4, 2026
@vyasr
vyasr deleted the branch-cudf-streaming-cpp branch June 4, 2026 16:03
rapids-bot Bot pushed a commit that referenced this pull request Jun 4, 2026
This PR ports over the Python bindings for the parts of librapidsmpf as the new `libcudf_streaming` library in #22747 

Note that, just like in the preexisting rapidsmpf testing setup, only the conda environment will run the MPI/UCXX tests. 

Contributes to #22528

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)

Approvers:
  - Bradley Dice (https://github.com/bdice)
  - Matthew Murray (https://github.com/Matt711)
  - Matthew Roeschke (https://github.com/mroeschke)

URL: #22760
vyasr added a commit to vyasr/cudf that referenced this pull request Jun 13, 2026
The cudf_streaming tests are lightweight and complete quickly. Reduce
the timeout from 30m to 5m which still provides ample headroom while
avoiding masking long hangs.

References:
- NVIDIA#22747 (comment)
- NVIDIA#22747 (comment)

Signed-off-by: Vyas Ramasubramani <vyasr@nvidia.com>
rapids-bot Bot pushed a commit that referenced this pull request Jun 13, 2026
Reduce the `timeout` for `cudf_streaming` C++ tests from 30m to 5m in `ci/test_cpp.sh`.

The cudf_streaming tests are lightweight and complete quickly. The 30m timeout was kept during the initial PR (#22747) out of caution after reviewer feedback (#22747 (comment), #22747 (comment)), but 5m provides ample headroom while catching hangs much sooner.

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)

Approvers:
  - Bradley Dice (https://github.com/bdice)

URL: #22880
vyasr added a commit that referenced this pull request Jun 15, 2026
Add `cudf_streaming` to the 'other libcudf includes' regex in
`.clang-format` so that `cudf_streaming/` headers are sorted into the
correct include category (priority 5) instead of falling through to the
generic system includes bucket (priority 9).

Follow-up from
#22747 (comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CMake CMake build issue cudf-polars Issues specific to cudf-polars feature request New feature or request libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change Python Affects Python cuDF API.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants