Skip to content

Migrate Thrust zip iterators to CUDA equivalents - #23336

Merged
rapids-bot[bot] merged 9 commits into
NVIDIA:mainfrom
PointKernel:migrate-zip-iterator
Aug 5, 2026
Merged

Migrate Thrust zip iterators to CUDA equivalents#23336
rapids-bot[bot] merged 9 commits into
NVIDIA:mainfrom
PointKernel:migrate-zip-iterator

Conversation

@PointKernel

Copy link
Copy Markdown
Member

Description

This PR replaces remaining thrust::zip_iterator and thrust::make_zip_iterator usage with CUDA equivalents across cuDF, including C++ tests and benchmarks. This also updates the corresponding iterator includes to use CUDA headers.

Checklist

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

@github-actions github-actions Bot added the libcudf Affects libcudf (C++/CUDA) code. label Jul 20, 2026
@PointKernel PointKernel added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Jul 20, 2026
@PointKernel
PointKernel marked this pull request as ready for review July 29, 2026 20:27
@PointKernel
PointKernel requested a review from a team as a code owner July 29, 2026 20:27
@NVIDIA NVIDIA deleted a comment from copy-pr-bot Bot Jul 29, 2026
@PointKernel PointKernel added the 3 - Ready for Review Ready for review by team label Jul 29, 2026
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • Refactor

    • Standardized GPU processing across analytics, joins, reductions, sorting, strings, and JSON, ORC, and Parquet workflows.
    • Updated iterator utilities while preserving existing results and behavior.
  • Bug Fixes

    • Improved Parquet page-index metadata handling and row-mask construction.
  • Tests

    • Updated unit tests and utilities to reflect the processing changes.
    • Existing assertions and expected results remain unchanged.

Walkthrough

Changes

CUDA iterator factories replace Thrust equivalents across cuDF benchmarks, algorithms, IO, parsing contracts, joins, reductions, and tests. Parquet metadata handling also adds page-index, offset-cache, and row-mask logic.

CUDA iterator and Parquet metadata migration

Layer / File(s) Summary
Foundational iterator contracts and algorithms
cpp/include/cudf/..., cpp/src/groupby/..., cpp/src/join/..., cpp/src/lists/..., cpp/src/quantiles/..., cpp/src/reductions/..., cpp/src/replace/..., cpp/src/sort/..., cpp/src/strings/...
Internal iterator construction and string-parsing iterator contracts now use CUDA iterator utilities.
Compression, JSON, and text IO paths
cpp/src/io/comp/..., cpp/src/io/json/..., cpp/src/io/text/...
Compression, JSON, and text paths replace Thrust iterator factories and adjust related iterator expressions.
Parquet metadata and page-index handling
cpp/src/io/parquet/..., cpp/src/io/utilities/...
Parquet metadata code adds page-index presence and range handling, cached column-chunk offsets, offset-index checks, and all-true row-mask construction. Parsing APIs use CUDA zip-iterator parameter types.
Validation and test updates
cpp/tests/...
Tests and assertion helpers adopt CUDA iterator headers and factories without changing expected results.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • rapidsai/cudf#23338: Both PRs migrate Thrust iterator factories to CUDA equivalents in overlapping benchmark and JSON paths.

Suggested reviewers: mythrocks, mhaseeb123, vuule, bdice

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.34% which is insufficient. The required threshold is 80.00%. 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 migration from Thrust zip iterators to CUDA equivalents across the codebase.
Description check ✅ Passed The description directly explains the iterator migration and related include updates described in the changeset.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

PointKernel and others added 6 commits July 30, 2026 21:32
…icts

# Conflicts:
#	cpp/benchmarks/common/generate_input.cu
#	cpp/src/io/json/column_tree_construction.cu
#	cpp/src/io/json/host_tree_algorithms.cu
#	cpp/src/io/json/json_column.cu
#	cpp/src/join/distinct_hash_join.cu
#	cpp/src/join/join_utils.cu
@PointKernel

Copy link
Copy Markdown
Member Author

/merge

@rapids-bot
rapids-bot Bot merged commit 0c8fc52 into NVIDIA:main Aug 5, 2026
138 of 139 checks passed
@PointKernel
PointKernel deleted the migrate-zip-iterator branch August 5, 2026 16:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3 - Ready for Review Ready for review by team improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants