Skip to content

Support Warp Striped, Vectorize and Transpose in Rust - #12115

Draft
tpn wants to merge 73 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-warp-foundation-integration
Draft

tpn wants to merge 73 commits into
NVIDIA:mainfrom
tpn:codex/cuda-coop-rust-warp-foundation-integration

Conversation

@tpn

@tpn tpn commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Physical and logical warps can now select Striped, Vectorize or Transpose through the same group-first Load/Store API. Supported logical widths are powers of two from 1 through 32. Transpose gets independent compiler-planned scratch per group and permutes values and validity on mutable Store; Striped and Vectorize preserve the payload.

The guide documents the supported algorithms and native shared-memory composition. Tests cover group origins, offsets, partial and scattered validity, mixed scopes, larger blocks and byte/64-bit accesses. The documented query example now uses the matching compiler revision too.

This draft follows #12114 and requires NVIDIA/cuda-rust#1586. Review this slice.

Validation: all 156 compiler controls, host tests, strict Clippy, rustdoc and guide builds pass. Focused Warp GPU checks pass, and separate-helper examples pass with thin/fat host LTO. Rust host CI passes on this head. The combined GPU suite passes, including 18 sanitizer runs and 20 expected-error checks. Direct/Transpose CUB comparisons are complete; overhead varies by workload. Final foundation review remains open.

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 <[email protected]>
Install the pinned toolchain without updating rustup itself.

Signed-off-by: Trent Nelson <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Signed-off-by: Trent Nelson <[email protected]>

# Conflicts:
#	rust/Cargo.lock
tpn added 25 commits October 20, 2026 12:47
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
@copy-pr-bot

copy-pr-bot Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

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.

@github-project-automation github-project-automation Bot moved this to Todo in CCCL Oct 21, 2026
@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Progress in CCCL Oct 21, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant