Replace hand-rolled output iterators with cuda::tabulate_output_iterator - #23856
Replace hand-rolled output iterators with cuda::tabulate_output_iterator#23856PointKernel wants to merge 1 commit into
Conversation
|
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. |
|
/ok to test |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review. 📝 WalkthroughSummary by CodeRabbit
WalkthroughThe change replaces custom Thrust output iterators with indexed device functors used by tabulate output iterators. Contiguous split and Parquet preprocessing retain their existing scan and reduction data flow. ChangesCUDA output writes
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This is a localized iterator implementation cleanup with no actionable merge-blocking risk remaining after normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
bdice
left a comment
There was a problem hiding this comment.
This looks fine but I vaguely recall there being an issue that forced us to create custom output iterators. Maybe a historical compiler bug or Thrust performance issue that is now resolved? Let's check the history before merging.
Description
There are a few places in cuDF that hand-roll output iterators where
cuda::make_tabulate_output_iteratorwould do. This PR replaces them.Each one reimplements the iterator internals just to write a single struct field, when all that is actually needed is the functor.
Checklist