[FEA]: Add a fixed-grid tiny-segment sort path
- Dominant language
- C++
- Stars
- 2.5k
- Forks
- 486
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 295
Description
### Is this a duplicate?
- [x] I confirmed there appear to be no [duplicate issues](https://github.com/NVIDIA/cccl/issues) for this request and that I agree to the [Code of Conduct](CODE_OF_CONDUCT.md)
### Area
CUB
### Is your feature request related to a problem? Please describe.
Very small segments are sensitive to queueing, launch, synchronization, and padding overhead. Sending every tiny segment through the general fine-grained work-plan and downstream kernel path may cost more than sorting it in a dedicated path.
### Describe the solution you'd like
Add a dedicated fixed-grid tiny-segment path that can claim and sort tiny segments without requiring the general sub-warp/warp kernel to own this specialization.
The implementation should be evaluated alongside the existing single-thread and fused partitioning work, and should include correctness and performance coverage for pure-tiny and mixed segment distributions.
This issue can be closed once the fixed-grid path is integrated or its approach is incorporated into the related tiny-segment work with supporting performance results.
### Describe alternatives you've considered
- Single-thread tiny-segment sorting: https://github.com/NVIDIA/cccl/issues/10792
- In-place small-segment processing during partitioning: https://github.com/NVIDIA/cccl/issues/10804
### Additional context
_No response_
Contributor guide
Research direction
Start by reviewing the existing CUB tiny-segment sorting paths and the related issues #10792 and #10804, then compare their partitioning and kernel approaches. The work is done when a fixed-grid path is integrated or its approach is incorporated into the related work, with correctness and performance results for pure-tiny and mixed segment distributions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- hpc, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 40/100