Forward-merge release/26.10 into main - #24115
Merged
14 commits merged intoSep 14, 2026
Merged
14 commits merged into
14 commits merged into
Conversation
Defaults cudf-polars to the kvikio MULTI_POLL backend with new defaults for `kvikio_task_size`, `kvikio_bounce_buffer_bytes`, `kvikio_reactor_count`, `kvikio_reactor_dispatch`, and `kvikio_request_ceiling`. These are the best defaults we've found based on benchmarking on a g7e.8xlarge instance. | Setting | MULTI_POLL default | EASY_THREADPOOL default | |---|---|---| | `kvikio_remote_io_backend` | `MULTI_POLL` | `EASY_THREADPOOL` | | `kvikio_task_size` | 16 MiB | 64 MiB | | `kvikio_bounce_buffer_bytes` | 16 MiB | 16 MiB | | `kvikio_nthreads` | unset (defers to kvikio's own default) | 256 | | `kvikio_reactor_count` | 24 | not used | | `kvikio_reactor_dispatch` | `PER_CHUNK` | not used | | `kvikio_request_ceiling` | 256 | not used | Notes: - MULTI_POLL doesn't use `kvikio_nthreads` for remote I/O, it uses the reactor threads instead, so we don't force that pool to 256 threads under MULTI_POLL. - EASY_THREADPOOL doesn't use the reactor settings at all. - `kvikio_bounce_buffer_bytes` applies to both backends, it's not MULTI_POLL-specific. - Depends on rapidsai/kvikio#1049 - Depends on #23683 Authors: - Matthew Murray (https://github.com/Matt711) - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - Peter Andreas Entschev (https://github.com/pentschev) URL: #23839
Contributor
Author
|
FAILURE - Unable to forward-merge due to an error, manual merge is necessary. Do not use the IMPORTANT: When merging this PR, do not use the auto-merger (i.e. the |
Signed-off-by: nvskills-svc-account <svc-nvskills-signing@nvidia.com>
Fixes undefined behavior in `cudf::io::parquet::detail::CompactProtocolReader::get_varint`, where a shift operation can shift number past the bit width of the result type. New tests are added to cover such corner cases. Authors: - Nghia Truong (https://github.com/ttnghia) Approvers: - Lawrence Mitchell (https://github.com/wence-) - Muhammad Haseeb (https://github.com/mhaseeb123) - Igor Peshansky (https://github.com/igorpeshansky) - Vukasin Milovanovic (https://github.com/vuule) URL: #23346
This PR adds significant improvements to hybrid scan metadata handling including: - Add a new constructor that takes in pre-materialized footers via move semantics. - Reuse the parallel footer parser from base class. - Enable skipping page-index setup when moved in footer already has it. - Mismatched schema across files only resolved for selected columns at column selection time. - Similarly, mismatched nullability across sources only resolved at column selection time. - Honors case sensitive names in column selection. - Uses per-source column-chunk mapping in `create_global_chunk_info` which previously reused row group zero's mapping across all sources. - Fixes `reset_output_buffers` to reset the buffers as well as the template. Authors: - Muhammad Haseeb (https://github.com/mhaseeb123) Approvers: - Vukasin Milovanovic (https://github.com/vuule) - Nghia Truong (https://github.com/ttnghia) URL: #23795
Follows up #23836. Do not turn on pinned memory for systems that do not support it. Authors: - Matthew Murray (https://github.com/Matt711) Approvers: - Tom Augspurger (https://github.com/TomAugspurger) - Peter Andreas Entschev (https://github.com/pentschev) URL: #24129
) This reverts commit 4416a6c. Per discussion, this barely has any time savings per build, and there at least two multi-process caching bugs in released Cython versions today: - cython/cython#7983 and cython/cython#7985 Until we're happy that caching in Cython is safe to use in a multi-job build situation, let's just disable it. Authors: - Lawrence Mitchell (https://github.com/wence-) Approvers: - Gil Forsyth (https://github.com/gforsyth) - Bradley Dice (https://github.com/bdice) URL: #24132
Updated cudf-polars to support Polars 1.43 and Polars 1.44. The plan is to support Polars 2 in the next release. And remove all 1.XX version guards. Authors: - Matthew Murray (https://github.com/Matt711) Approvers: - Kyle Edwards (https://github.com/KyleFromNVIDIA) - Matthew Roeschke (https://github.com/mroeschke) URL: #23914
Rewrite skills docs links
…23929) ## Summary Track the coordinated migration of stream APIs and call sites from `rmm::cuda_stream_view` to CCCL's `cuda::stream_ref`. This propagates `cuda::stream_ref` through RMM containers and memory resources, RAFT resource and handle APIs, downstream C++ interfaces, Python/Cython bindings, benchmarks, tests, and documentation. This updates cuDF C++ and Cython stream accessors, building on the default-stream work merged in #23770. It continues work from #23636. Depends on rapidsai/rmm#2372. Tracked in rapidsai/build-planning#318. ## Migrations - Pass `cuda::stream_ref` through stream pools, resource accessors, conditionals, and downstream APIs without converting to `rmm::cuda_stream_view` - Use `cuda::stream_ref` constructions for default/legacy/per-thread streams - `rmm::cuda_stream_default` ➡️ `cuda::stream_ref{cudaStream_t{cudaStreamDefault}}` - `rmm::cuda_stream_legacy` ➡️ `cuda::stream_ref{cudaStreamLegacy}` - `rmm::cuda_stream_per_thread` ➡️ `cuda::stream_ref{cudaStreamPerThread}` - Use `.get()` when calling an API that requires a raw `cudaStream_t`, including CUDA runtime, library, CUB, and legacy API boundaries (previously `rmm::cuda_stream_view` used `value()`) - Use `.sync()` when synchronizing a `cuda::stream_ref` (previously `rmm::cuda_stream_view` used `synchronize()`) - Update Cython declarations and call sites to pass stream references directly where supported ## CUDA context initialization Includes the context fix from #24147 so it lands together with the stream migration. `cuda::stream_ref::sync()` calls the CUDA Driver API, which does not implicitly establish a current context on fresh execution threads. Empty-column/metadata operations can therefore fail with `CUDA_ERROR_INVALID_CONTEXT` in Dask-cuDF and cuStreamz. `pylibcudf.utils._get_stream()` now calls `_ensure_cuda_context()`, which uses `cuda.bindings.cyruntime.cudaFree(NULL)` to establish a current context when needed. RMM is unchanged, initialization does not occur at import time, and no profiler-header dependency is needed. Runtime `cudaStream_t` objects are accepted directly, including older bindings versions without `__cuda_stream__` support. The runtime-only `_get_stream()` measured **126 ns** per warm call, **7.11 µs** for first use on a fresh thread, and **192 ms** for first-process CUDA initialization. It returned while GPU work remained pending in all four tested stream modes; no forced GPU synchronization was observed. The current implementation releases the GIL on every call, which can introduce scheduling delays under Python-thread contention. See [updated benchmark methodology, comparisons, and validation limitations](#23929 (comment)). Authors: - Bradley Dice (https://github.com/bdice) Approvers: - Muhammad Haseeb (https://github.com/mhaseeb123) - Vyas Ramasubramani (https://github.com/vyasr) URL: #23929
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Forward-merge triggered by push to release/26.10 that creates a PR to keep main up-to-date. If this PR is unable to be immediately merged due to conflicts, it will remain open for the team to manually merge. See forward-merger docs for more info.