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
LaunchConfig values.
- 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.config faithfully 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.
Background
cuda.core.launch()supportsLaunchConfig.clusterandLaunchConfig.is_cooperative, but explicitGraphDefinitionkernel-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:
LaunchConfigvalues.Acceptance criteria
KernelNode.configfaithfully reports clustered and cooperative state.