Repository navigation
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. |
5cd24e7 to
2491b5a
Compare
|
/ok to test 595d902 |
|
@coderabbitai full review |
Action not completed
|
ec7fef2 to
ab75da9
Compare
😬 CI Workflow Results🟥 Finished in 5h 04m: Pass: 97%/488 | Total: 27d 02h | Max: 5h 03m | Hits: 18%/11369010See results here. AI failure analysis1. CUB warp reduction lambdas rejected by NVRTC JIT · 7 jobsExplanation: The `static_for` lambdas in `ShuffleReduce` and `FullShuffleReduce` lack execution-space annotations, so NVRTC treats them as host functions even though their enclosing methods are device functions. The identical source locations and NVRTC error cause the C Parallel, cuda.compute, minimal, and examples failures on Linux and Windows. Evidence: Copy this prompt into a coding agentJobs:
2. cuda.coop.cutlass installation cannot resolve nvidia-cutlass-dsl 4.9 · 3 jobsExplanation: The project wheel builds successfully, but installation stops before tests because its metadata requires `nvidia-cutlass-dsl>=4.9,<5` while the package index exposes no qualifying release for Python 3.10, 3.12, or 3.14. The evidence does not establish whether 4.9 should have been published or whether the repository requirement was advanced prematurely. Evidence: Copy this prompt into a coding agentJobs:
3. MatX configuration requires missing SciPy package · 1 jobExplanation: MatX configuration checks Python dependencies and treats missing SciPy as fatal, while `ci/matx/build_matx.sh` installs only NumPy. Missing CuPy is reported as optional and is not the decisive failure. Evidence: Copy this prompt into a coding agentJobs: |
197aa80 to
d5c0003
Compare
ab75da9 to
cdcbce7
Compare
Package CUTLASS primitives under their qualified namespace with a private, matching CCCL header bundle and explicit compiler capability checks. Keep the parent cuda.coop namespace available for coexistence. Signed-off-by: Trent Nelson <trent@trent.me>
Preserve thread hierarchy, register and TensorSSA adapters, inferred payload types, and explicit shared storage reservation and release. Move CUB planning and compiler-owned linking, caching, and scratch allocation into CUTLASS-private modules without neutral dispatch. Signed-off-by: Trent Nelson <trent@trent.me>
Preserve shared sources, storage reuse, alignment and tail controls. Stage global data with native CuTe copies before returning shared Loads. 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>
Show the mechanisms cuda.coop.cutlass uses to call CUB from a CuTe kernel in one self-contained script: a trace-time entry point, exact launch facts, a cute.ffi call to a symbol compiled later, a trace-finalize hook that compiles the wrapper with NVRTC to LTO-IR and attaches it through the gpu.module link-libraries attribute, and shared memory allocated after NVRTC reports the CUB TempStorage layout. The accompanying page explains each step, shows the finalized module and the linked cubin, lists what the package adds beyond the script, and records the questions open for CUTLASS reviewers. A runtime test runs the script in an isolated interpreter and checks that it never imports cuda.coop.cutlass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Trent Nelson <trent@trent.me>
Add a primer for developers without prior CUTLASS or CuTe DSL experience. It explains which part of CUTLASS the package depends on, walks through a CuTe kernel, and describes how the DSL compiles a function: a source-level AST rewrite of control flow, execution of the body with symbolic values, and finalize hooks that run before the module hash and device link. It contrasts that model with PyTorch Dynamo, Numba, and Triton, notes the optional PyIR mode, and maps each integration need to the DSL facility and cuda.coop.cutlass module that serves it. It closes with the private interfaces the package checks for, a reading guide to the DSL sources, and shared vocabulary. Link the primer from the overview, the Developer Guide, and the minimal integration example. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Trent Nelson <trent@trent.me>
Compile typed binary operators to device LTO-IR before kernel tracing. Give each compiled body a content-based symbol and link it through the existing CUB provider with matching dtype and target checks. Expose compile_operator and DeviceOperator, and cover callback results, ABI validation, cache isolation, retry behavior, and final inlining.
Show host-side callback preparation and its use with Reduce and Scan. Describe the scalar signature, target matching, associative operator contract, and explicit initial values for exclusive scans.
Propagate errors from the required Pathfinder dependency instead of silently selecting headers from another CUDA installation. Keep the existing fallbacks when discovery returns no usable header directory, and cover error propagation with a focused regression test.
Use Pathfinder to locate cuobjdump and compute-sanitizer across supported CUDA installations. Match the runtime CI preflight to the tests and require the binary-discovery API in the test extra.
Collect implementation includes alongside shared renderer preambles so load/store bundles avoid unrelated block and warp headers. Signed-off-by: Trent Nelson <trent@trent.me>
Explain DSL argument adaptation, control-flow staging and launch facts. Qualify PyIR support and the integration example prerequisites, and describe how load results become per-thread scalar expressions. Signed-off-by: Trent Nelson <trent@trent.me>
Limit the standalone example subprocess to three minutes so a synchronization regression cannot leave the test running indefinitely. Signed-off-by: Trent Nelson <trent@trent.me>
Describe the per-invocation option copies used by the CUTLASS 4.9 candidate and remove the obsolete request for upstream option resets.
Use CUDA_COOP_CUTLASS names for package and example settings. Honor provider cache directory changes after in-memory hits so subsequent compilation uses the selected artifact location.
Display syntax-highlighted source alongside each download and remove the redundant neighbor-operations navigation stub.
The standalone examples inherited the root 88-column configuration. Reuse the package rules so Ruff also enforces 80 columns and checks long lines in the executable documentation.
CuTe normally groups traced kernels in one GPU module. Keep visiting every GPU module to match its link-library collection, and document that choice beside both provider registration loops.
Keep independent CuTe helper allocations live while three scratch lanes interleave cooperative operations and reuse storage in runtime loops. Document that CuTe places allocations across allocator instances.
Exercise batched MMA windows with cooperative selection between each Tensor Core operation. Check native tensor-memory roundtrips and the following accumulator update against independent numerical references.
Use cuda.coop.cutlass directly throughout examples and tests. The old selectors invoked the same implementation and duplicated test cases. Keep distinct native payload and output-layout coverage, and update example names, type aliases and documentation to describe one API.
Add a runnable example that moves MMA accumulators from tensor memory to registers, selects keys cooperatively, and writes them back for the next matrix product. Explain layouts, storage and synchronization with inline source and a downloadable program. Run the example from the existing runtime test so its numerical checks and documented implementation stay together.
Describe scalar operations and planner types without references to the retired common and qualified API split.
Keep the extracted snippet self-contained so copied annotations resolve.
Use the existing project and workflow registrations for standalone CUTLASS qualification. Track its package inputs and bundled licenses through the existing change classifier, and remove the package fragment.
Use the existing override while the package is under development. Keep documentation enabled and restore full coverage before landing. [skip-compile-time-bench][skip-sass-diff][skip-vdc]
cdcbce7 to
a953808
Compare
Preserve caller shared-memory reservations while including the final layout required by cooperative primitives. Otherwise an explicit budget can underallocate after scratch alignment. Refresh size diagnostics only when their branches do not produce values consumed by host code.
Show the handoffs between CuTe, the example integration, NVRTC, and nvJitLink so readers can follow tracing, linking, and GPU execution. Keep the lanes readable through contained scrolling on narrow screens. Signed-off-by: Trent Nelson <trent@trent.me>
Use the CUDA shared-to-generic intrinsic so NVRTC and LTO retain the scratch address space and emit shared loads and stores. Opaque inline assembly hid that information and left generic memory instructions. Keep the integration example consistent and guard shared-memory codegen in the existing final-cubin tests.
Make CUTLASS cooperative primitives installable as the standalone
cuda-coop-cutlassdistribution, imported withimport cuda.coop.cutlass as coop.The package owns its implementation and compiler support;
cuda.coopremains anamespace parent.
The package provides cooperative primitive families, thread payloads, group
queries, shared-storage reservation/release, native CuTe interoperability and typed
scalar callbacks for Reduce and Scan. Runnable examples explain tracing, NVRTC LTO
linking and shared-memory allocation, including a Tensor Core example that composes
TMEM, cooperative TopK and subsequent MMA consumption. See the documentation
preview and Tensor Core/TopK
walkthrough.
Validation includes host/unit and strict typing checks, compilation with GPUs
hidden, representative runtime cases through both compiler routes, and the advanced
example on GB300. Those results remain tied to their recorded source. Native ARM Python JIT
now passes the reduction/shared-workspace examples and the FlashInfer norm/model
experiment using matched internal CuTe 4.9 prerelease wheels; this does not qualify
the unavailable stable public dependency. Earlier native CI passed Windows artifacts, while
Linux host/compiler jobs could not obtain the required public CUTLASS DSL version.
The dependency requirement is unchanged.
Explicit launch shared-memory budgets now include deferred cooperative scratch
while preserving larger caller reservations. Diagnostic rewrites preserve branches
that return host values. The fix passes 127 storage tests, six focused cases through
the alternate compiler route, and scoped pre-commit.
Nine CI tests and twelve routing fixtures pass, as does scoped pre-commit.
The ordinary package workflow payloads are preserved.
For draft iteration, an existing matrix override selects five CUTLASS jobs, including
one L4 runtime job gated by CPU compilation. Documentation stays enabled;
compile-time benchmarks, SASS comparison and devcontainer verification are skipped.
The override intentionally blocks aggregate CI until it is cleared for normal
acceptance testing. Package CI configuration stays with this PR; the separate CI
machinery proposal #12414 is closed.
This draft depends only on removal #12296 through
codex/cuda-coop-removal-base-12296, a comparison snapshot combining current mainwith the unchanged removal head. Retarget after removal lands. No release packages
are uploaded.