NVIDIA / NVIDIA/cuda-python

cuda.core: support clustered and cooperative kernel graph nodes

Open
#2,421 0 comments 0 reactions 1 assignee View on GitHub

@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 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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.