Skip to content

cuda.core: support clustered and cooperative kernel graph nodes #2421

Description

@Andy-Jost

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.

Metadata

Metadata

Assignees

Labels

P2Low priority - Nice to havecuda.coreEverything related to the cuda.core modulefeatureNew feature or requesttriageNeeds the team's attention

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions