Skip to content

[Rust] Add Block RadixRankKeys - #12243

Closed
tpn wants to merge 291 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-radix-rank-keys
Closed

tpn wants to merge 291 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-radix-rank-keys

Conversation

@tpn

@tpn tpn commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Superseded by #12241, which now owns this implementation within its complete feature family. The original commits, branch and validation evidence remain available. This draft is closed unmerged.


Historical scope and validation below refer to the original source heads.

Add Block RadixRankKeys to compute stable per-key ranks without reordering or consuming the keys. Fresh i32 ranks occupy the original blocked input slots. The API supports complete XYZ blocks, integer keys, ascending or descending order and a radix digit of 1–8 bits. The begin bit may be a block-uniform runtime value; invalid bit intervals or unreadable keys trap before CUB.

This follows RadixSortPairs #12242 and uses the pinned Oxide compiler. Review the 21-file owning diff; Files changed against main also includes the preceding Rust API layers.

Local Rust 1.99.1 validation passed host tests and strict checks, all ten compiler controls and both release consumers. Inspection covered all five kernel entries and native ABIs. Numerical checks, three sanitizers, and four invalid-input/range traps with immediate successful recovery runs passed.

Earlier source reviews, the nine-recipe native batch and MSRV results remain historical; earlier fixture/parser failures and their recoveries remain separately recorded. Timing was not repeated, and this qualification makes no instruction-equivalence or performance claim. Current-head host CI passes (97 tests/doctests; 15 native tests excluded), along with the three upstream checks.

tpn added 30 commits October 20, 2026 11:54
…da-coop-rust-transpose-final-pin

Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Support both CUB warp-transpose algorithms for complete blocks.
Preserve payload validity through Store permutation and query exact
scratch layouts for regular and timesliced exchanges.

Signed-off-by: Trent Nelson <trent@trent.me>
Use the group-first API for independent 32-lane tiles and preserve
carrier ownership grain across block and warp operations. Select the
matching Oxide compiler for scoped participation and access checks.

Signed-off-by: Trent Nelson <trent@trent.me>
Combine the six block Load/Store algorithms with explicit storage and
physical-warp Direct dispatch. Preserve group and storage forwarding
through the common boundary and qualify timesliced storage reuse.

Signed-off-by: Trent Nelson <trent@trent.me>
Use the common group-first API with power-of-two lane groups, preserving
fixed carrier ownership and scope-correct controls through helpers.

Signed-off-by: Trent Nelson <trent@trent.me>
Explain the user workflow, compilation and generic specialization before
provider internals. Keep the source listings tied to the Cargo example
and move provider details to their own page.

Signed-off-by: Trent Nelson <trent@trent.me>
Allow algorithm.into() for full-tile calls and From constructors for
option builders while preserving existing default inference. Use the
conversion in the executable generic helper.

Signed-off-by: Trent Nelson <trent@trent.me>
Observe the finite loop and later wider results, and distinguish
participation from memory completion. Cover nested breaks and lane-local
scalar work before a wider operation.

Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
tpn added 23 commits October 23, 2026 14:08
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Use the scoped barrier diagnostic for conflicting Warp accesses.
Accept the two finite sibling-warp read loops after reconvergence,
matching the migrated checker and existing logical-warp policy.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
Merge the corrected prerequisite while preserving this owner.

Signed-off-by: Trent Nelson <trent@trent.me>
@copy-pr-bot

copy-pr-bot Bot commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

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.

@github-project-automation github-project-automation Bot moved this to Todo in CCCL Oct 24, 2026
@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Progress in CCCL Oct 24, 2026
@tpn tpn closed this Oct 25, 2026
@github-project-automation github-project-automation Bot moved this from In Progress to Done in CCCL Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant