NVIDIA / NVIDIA/cuda-python

[FEA] cuda.core: expose graph and graph-node identity/introspection APIs (CUDA 13.1)

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

@Andy-Jost is already working on this.

Since Jul 24, 2026.

cuda.core feature
Dominant language
Cython
Stars
3.4k
Forks
329
Avg merge
1d 23h
Merged PRs (30d)
116

Description

Summary

CUDA 13.1 adds stable identifiers and navigation for graphs and nodes; CUDA 13.3 adds a related
function attribute. None are exposed by cuda.core.graph today.

Motivation: correlating cuda.core graph objects with profiler/tooling output (toolsNodeId),
diagnostics and logging, keying per-node bookkeeping for the update work in #2352 / #2354, and
navigating from a node back to its owning graph.

Underlying C APIs to cover

C API Purpose
cuGraphGetId(CUgraph, unsigned int* graphId) stable ID of a graph definition
cuGraphExecGetId(CUgraphExec, unsigned int* graphId) stable ID of an executable graph
cuGraphNodeGetLocalId(CUgraphNode, unsigned int* nodeId) node ID local to its graph
cuGraphNodeGetToolsId(CUgraphNode, unsigned long long* toolsNodeId) node ID as reported by profiling/tooling interfaces
cuGraphNodeGetContainingGraph(CUgraphNode, CUgraph*) navigate from node to owning graph
CU_FUNC_ATTRIBUTE_DEVICE_NODE_UPDATE_SUPPORTED (13.3) per-function attribute: kernel may perform device-side node updates

Design sketch (draft — needs design-meeting review)

[!IMPORTANT]
Starting point only, not a settled design — review in the cuda.core design meeting.

Read-only properties, no new objects:

  • .id on the graph-definition and executable-graph wrappers (mapping to
    cuGraphGetId / cuGraphExecGetId respectively);
  • .local_id, .tools_id, .containing_graph on the node wrappers in cuda.core.graph;
  • the 13.3 function attribute joins the existing kernel-attribute surface.

Open questions for the meeting:

  1. Exact mapping onto cuda.core's graph classes (which wrapper owns CUgraph vs CUgraphExec).
  2. Plain int IDs vs. small typed wrappers.
  3. containing_graph: return an existing wrapper (identity-cached) or a fresh non-owning one —
    consistent with #1187 / #1989 lifetime conventions.

References

-- Leo's bot

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.