Skip to content

[Rust] Add Block Shuffle with partial result validity - #12126

Closed
tpn wants to merge 231 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-shuffle
Closed

tpn wants to merge 231 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-shuffle

Conversation

@tpn

@tpn tpn commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Superseded by #12124, 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.

Block kernels can read neighboring values with coop::shuffle(block, &values, options). It shifts blocked-order values by one item, preserves the input, and returns fresh storage with the same type, extent and alignment. Down is the default; Up reads the previous item.

let next = coop::shuffle(block, &values, Default::default());
let previous = coop::shuffle(block, &values,
    coop::ShuffleOptions::default().mode(coop::Up));

The exposed boundary stays invalid: get returns None, and write initializes it before Store. All input slots must be initialized. Includes a generic Load → Shuffle → edge repair → Store example and guide.

Current validation: strict host/docs checks, 17 native requests, shape regression, 12 compiler controls (three accepted, nine rejected), two release builds and complete artifact inspection. GPU validation covers 3,840 example values, ten fixture cases, three clean sanitizers and four expected traps with immediate health checks. Current-head host CI passes (71 tests/doctests; nine native tests excluded), along with the three upstream checks. The draft bot status is not a source review. No current performance comparison is claimed.

Depends on #12124 and Oxide through #1589. Review the owning Shuffle diff; the main-base Files changed view includes earlier prerequisites.

tpn added 30 commits October 19, 2026 21:39
Create a host-only Cargo workspace that specializes selected CUB forms
through NVRTC and reports exact scratch layouts with their LTO output.
Bind specialization identities to source, headers and toolkit bytes.
Include a runnable provider example, Rust guide and CPU checks.

Signed-off-by: Trent Nelson <trent@trent.me>
Install the pinned toolchain without updating rustup itself.

Signed-off-by: Trent Nelson <trent@trent.me>
Serve native specialization batches through the versioned Oxide boundary
and exercise Load and Store through a standalone Cargo consumer with a
generic helper dependency.

Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Reuse the same helper sites with 64- and 128-thread kernels and retain

one device static across their emitted bodies. Check each launch plan

and preserve fixed external-symbol diagnostics.

Signed-off-by: Trent Nelson <trent@trent.me>
Select fixture output locations from raw CUDA coordinates and exercise
payload initialization, access and copying at both item counts. Annotate
compile-fail examples and clarify hierarchy ordering in the guide.

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

# Conflicts:
#	rust/Cargo.lock
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>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
tpn added 28 commits October 23, 2026 13:46
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 current compiler diagnostic for the original case.
Keep its program body and all other expectations unchanged.

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>
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>
@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