Skip to content

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

Description

@leofang

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 from_handle constructors need to allow managing ownership #1187 / Inconsistent lifetime management across from_handle / from_* APIs #1989 lifetime conventions.

References

-- Leo's bot

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

cuda.coreEverything related to the cuda.core modulefeatureNew feature or request

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions