cuda.core: support clustered and cooperative kernel graph nodes
Open
@Andy-Jost is already working on this.
Since Jul 24, 2026.
bug
cuda.core
feature
P1
- Dominant language
- Cython
- Stars
- 3.4k
- Forks
- 329
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 116
Description
Background
cuda.core.launch() supports LaunchConfig.cluster and LaunchConfig.is_cooperative, but explicit GraphDefinition kernel-node construction currently copies only the basic grid, block, and shared-memory fields. Cluster and cooperative attributes are ignored, and a clustered grid is incorrectly treated as a block grid. KernelNode.update() likewise does not model the corresponding kernel-node attributes or clustered-grid semantics.
This is a follow-up to #2352 and #2395.
Scope
Add end-to-end support for clustered and cooperative graph kernel nodes, including:
- Explicit construction using clustered and cooperative
LaunchConfigvalues. - Correct conversion between logical cluster-grid dimensions and CUDA block-grid dimensions.
- Setting and preserving the corresponding CUDA kernel-node attributes.
- Reconstruction and inspection of explicit and captured nodes.
- Partial updates of launch configuration, kernel, and arguments without losing existing attributes.
- Device and kernel capability validation with clear errors before graph mutation.
- Public API documentation and release notes.
Acceptance criteria
- Clustered and cooperative nodes can be explicitly constructed, instantiated, and launched successfully on supported devices.
- Captured nodes reconstruct with their launch dimensions and kernel-node attributes intact.
KernelNode.configfaithfully reports clustered and cooperative state.- Partial updates preserve omitted dimensions, attributes, kernel arguments, and ownership metadata.
- Unsupported devices, kernels, or attribute combinations fail before mutating the graph.
- Tests cover explicit and captured graphs, clustered-grid conversion, cooperative launch, reconstruction, partial updates, capability validation, and failed-update atomicity.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.