IP Library › Granted Patent US 12,639,054
Granted Patent B1
US 12,639,054 · App. 18/114,870 · Granted May 26, 2026

Application programming interface to add graph node dependencies

Inventors: David Anthony Fontaine (Mountain View, CA); Steven Arthur Gurfinkel (San Jose, CA)
Assignee: NVIDIA Corporation
G06F8/433G06F9/52
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,639,054
App. No.
18/114,870
Filed
Feb 27, 2023
Granted
May 26, 2026
Kind
B1
Art Unit
2192
USPC
717/156
Abstract

Apparatuses, systems, and techniques to perform an application programming interface (API) to indicate one or more graph node functions of one or more graph nodes to be added to a software graph based, at least in part, on a dependency type indicated by the API. In at least one embodiment, one or more graph nodes are added to a software graph based on a node type and a dependency type.

Claims (32)

1 . A computer-implemented method comprising:

performing an application programming interface (API) to indicate one or more graph node functions of one or more graph nodes to be added to a software graph based, at least in part, on a dependency type indicated by the API;

wherein the API is to indicate one or more graph node functions, based, at least in part, on a graph node type indicated by one or more node parameters;

wherein the dependency type includes one or more of a full execution dependency, a launch order dependency, a fast dependent launch dependency, or an anti-deadlock dependency; and

wherein the API is to receive a set of parameters comprising an identifier of the one or more graph nodes and dependency information corresponding to the dependency type.

2 . The computer-implemented method of claim 1 , wherein the API is to indicate one or more graph node functions, based, at least in part, on a graph node type indicated by one or more node parameters.

3 . The computer-implemented method of claim 1 , wherein the set of parameters comprises an indication of the software graph.

4 . The computer-implemented method of claim 1 , wherein the API is to cause the one or more graph nodes to be added to the software graph by identifying one or more nodes of the software graph dependent to or dependent on the one or more graph nodes.

5 . The computer-implemented method of claim 1 , wherein the dependency type indicates one or more constraints on scheduling a first operation corresponding to the one or more graph nodes and a second operation corresponding to a second graph node.

6 . The computer-implemented method of claim 1 , wherein the graph node functions include one or more of a memory operation, a kernel operation, a child graph operation, a null-operation, a variable operation, or an event operation.

7 . The computer-implemented method of claim 1 , wherein performing the API is to cause a second one or more nodes to be added to the software graph based on the set of parameters.

8 . A computer system comprising:

one or more processors and memory storing executable instructions that, if performed by the one or more processors, are to perform an application programming interface (API) to indicate one or more graph node functions of one or more graph nodes to be added to a software graph based, at least in part, on a dependency type indicated by the API;

wherein the API is to indicate one or more graph node functions, based, at least in part, on a graph node type indicated by one or more node parameters;

wherein the dependency type includes one or more of a full execution dependency, a launch order dependency, a fast dependent launch dependency, or an anti-deadlock dependency; and

wherein the API is to receive a set of parameters comprising an identifier of the one or more graph nodes and dependency information corresponding to the dependency type.

9 . The computer system of claim 8 , wherein the set of parameters comprises an indication of the software graph.

10 . The computer system of claim 8 , wherein the API is to further indicate a port identifier of a node associated with the one or more graph nodes.

11 . The computer system of claim 8 , wherein the API is to cause the one or more graph nodes to be added to the software graph by identifying one or more nodes of the software graph dependent to or dependent on the one or more graph nodes.

12 . The computer system of claim 8 , wherein the dependency type indicates one or more constraints on scheduling a first operation corresponding to the one or more graph nodes and a second operation corresponding to a second graph node.

13 . The computer system of claim 8 , wherein the graph node functions include one or more of a memory operation, a kernel operation, a child graph operation, a null-operation, a variable operation, or an event operation.

14 . One or more processors comprising:

circuitry to perform an application programming interface (API) to indicate one or more graph node functions of one or more graph nodes to be added to a software graph based, at least in part, on a dependency type indicated by the API;

wherein the API is to indicate one or more graph node functions, based, at least in part, on a graph node type indicated by one or more node parameters;

wherein the dependency type includes one or more of a full execution dependency, a launch order dependency, a fast dependent launch dependency, or an anti-deadlock dependency; and

wherein the API is to receive a set of parameters comprising an identifier of the one or more graph nodes and dependency information corresponding to the dependency type.

15 . The one or more processors of claim 14 , wherein the set of parameters comprises an indication of the software graph.

16 . The one or more processors of claim 14 , wherein the API is to further indicate a port identifier of a node associated with the one or more graph nodes.

17 . The one or more processors of claim 14 , wherein the API is to cause the one or more graph nodes to be added to the software graph by identifying one or more nodes of the software graph dependent to or dependent on the one or more graph nodes.

18 . The one or more processors of claim 14 , wherein the dependency type indicates one or more constraints on scheduling a first operation corresponding to the one or more graph nodes and a second operation corresponding to a second graph node.

19 . The one or more processors of claim 14 , wherein the graph node functions include one or more of a memory operation, a kernel operation, a child graph operation, a null-operation, a variable operation, or an event operation.

20 . The one or more processors of claim 14 , wherein performing the API is to cause a second one or more nodes to be added to the software graph based on the set of parameters.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2023
From: FONTAINE, DAVID ANTHONY; GURFINKEL, STEVEN ARTHUR
To: NVIDIA CORPORATION
Reel/Frame 063020/0466 →
References Cited (95)
US 5689711A · Bardasz et al. · 1997 [cited by applicant]
US 6937969B1 · Vandersteen et al. · 2005 [cited by applicant]
US 7478375B1 · Kersters · 2009 [cited by applicant]
US 8115773B2 · Swift et al. · 2012 [cited by applicant]
US 8181168B1 · Lee et al. · 2012 [cited by applicant]
US 8239404B2 · Zhou et al. · 2012 [cited by applicant]
US 8539516B1 · Wilt et al. · 2013 [cited by applicant]
US 9251225B2 · Stanfill · 2016 [cited by applicant]
US 9372670B1 · Cartey et al. · 2016 [cited by applicant]
US 9411706B1 · van Schaik · 2016 [cited by applicant]
US 9542192B1 · Wilt et al. · 2017 [cited by applicant]
US 9684944B2 · Taylor · 2017 [cited by examiner]
US 10417058B1 · Kesler · 2019 [cited by applicant]
US 10673712B1 · Gosar et al. · 2020 [cited by applicant]
US 11003423B2 · Mazurskiy · 2021 [cited by applicant]
US 11113030B1 · Monga et al. · 2021 [cited by applicant]
US 11150961B2 · Agarwal et al. · 2021 [cited by applicant]
US 11340873B2 · Cangea et al. · 2022 [cited by applicant]
US 11422797B1 · Zhang et al. · 2022 [cited by applicant]
US 11455152B2 · Zhang · 2022 [cited by applicant]
US 11842221B2 · Glass et al. · 2023 [cited by applicant]
US 11868237B2 · Balasubramanian et al. · 2024 [cited by applicant]
US 12073263B1 · Thompson · 2024 [cited by applicant]
US 12159217B1 · Borkovic · 2024 [cited by applicant]
US 12443462B1 · Fontaine et al. · 2025 [cited by applicant]
US 20050155034A1 · Jiang et al. · 2005 [cited by applicant]
US 20070220031A1 · MacMahon · 2007 [cited by examiner]
US 20080278482A1 · Farmanbar et al. · 2008 [cited by applicant]
US 20090055630A1 · Isshiki et al. · 2009 [cited by applicant]
US 20090102846A1 · Flockermann et al. · 2009 [cited by applicant]
US 20090113396A1 · Rosen et al. · 2009 [cited by applicant]
US 20100333110A1 · Luo et al. · 2010 [cited by applicant]
US 20120072887A1 · Basak · 2012 [cited by applicant]
US 20120278365A1 · Labat et al. · 2012 [cited by applicant]
US 20150016257A1 · Kumar et al. · 2015 [cited by applicant]
US 20160210720A1 · Taylor · 2016 [cited by examiner]
US 20160210724A1 · Taylor et al. · 2016 [cited by applicant]
US 20160307353A1 · Ligenza et al. · 2016 [cited by applicant]
US 20170286526A1 · Bar-Or · 2017 [cited by examiner]
US 20180113713A1 · Cheng et al. · 2018 [cited by applicant]
US 20180136933A1 · Kogan et al. · 2018 [cited by applicant]
US 20180181676A1 · Khandelwal et al. · 2018 [cited by applicant]
US 20180218259A1 · Braz et al. · 2018 [cited by applicant]
US 20190182107A1 · Saxena et al. · 2019 [cited by applicant]
US 20190188055A1 · Hunt et al. · 2019 [cited by applicant]
US 20190327154A1 · Sahoo et al. · 2019 [cited by applicant]
US 20190339966A1 · Moondhra et al. · 2019 [cited by applicant]
US 20190370061A1 · Shah et al. · 2019 [cited by applicant]
US 20190370407A1 · Dickie · 2019 [cited by applicant]
US 20190370927A1 · Frenkel et al. · 2019 [cited by applicant]
US 20200057748A1 · Danilak · 2020 [cited by applicant]
US 20200136891A1 · Mdini et al. · 2020 [cited by applicant]
US 20200371761A1 · Gupta et al. · 2020 [cited by applicant]
US 20200396075A1 · Visegrady et al. · 2020 [cited by applicant]
US 20200409671A1 · Mazurskiy · 2020 [cited by applicant]
US 20200409709A1 · ChoFleming et al. · 2020 [cited by applicant]
US 20210004263A1 · Moita et al. · 2021 [cited by applicant]
US 20210011849A1 · Simpson et al. · 2021 [cited by applicant]
US 20210037397A1 · Guo et al. · 2021 [cited by applicant]
US 20210096921A1 · Banerjee et al. · 2021 [cited by applicant]
US 20210149734A1 · Gurfinkel et al. · 2021 [cited by applicant]
US 20210232579A1 · Schechter et al. · 2021 [cited by applicant]
US 20210248115A1 · Jones · 2021 [cited by examiner]
US 20210311727A1 · Khullar · 2021 [cited by applicant]
US 20210318908A1 · Cavus et al. · 2021 [cited by applicant]
US 20210373974A1 · Agarwal et al. · 2021 [cited by applicant]
US 20220214861A1 · Sohrabizadeh et al. · 2022 [cited by applicant]
US 20220334851A1 · Zhurba et al. · 2022 [cited by applicant]
US 20220334891A1 · Fontaine · 2022 [cited by applicant]
US 20230005096A1 · Gurfinkel et al. · 2023 [cited by applicant]
US 20230005097A1 · Gurfinkel et al. · 2023 [cited by applicant]
US 20230084951A1 · Fontaine et al. · 2023 [cited by applicant]
US 20230108560A1 · Wang · 2023 [cited by applicant]
US 20230118695A1 · Zhang et al. · 2023 [cited by applicant]
US 20230140822A1 · Purnomo et al. · 2023 [cited by applicant]
US 20230185635A1 · Vaz · 2023 [cited by applicant]
US 20230244523A1 · Gorantla et al. · 2023 [cited by applicant]
US 20230244549A1 · Fontaine et al. · 2023 [cited by applicant]
US 20230297444A1 · Fernandes et al. · 2023 [cited by applicant]
US 20240053991A1 · Wei et al. · 2024 [cited by applicant]
US 20240118965A1 · Ashrafi et al. · 2024 [cited by applicant]
US 20240168795A1 · Edwards et al. · 2024 [cited by applicant]
US 20240220314A1 · Gasparakis · 2024 [cited by applicant]
US 20240289187A1 · Fontaine et al. · 2024 [cited by applicant]
US 20250021407A1 · Fontaine et al. · 2025 [cited by applicant]
US 20250138795A1 · Dubrovsky et al. · 2025 [cited by applicant]
CUDA Runtime API. Reference Manual [online]. NVIDIA Corporation, Jan. 2022 [retrieved on Oct. 15, 2024]. Retrieved from the Internet: <URL: https://docs.nvidia.com/cuda/archive/11.6.0/pdf/CUDA_Runtime_API.pdf>. Chapter … [cited by examiner]
IEEE “IEEE Standard for Floating-Point Arithmetic”, Microprocessor Standards Committee of the IEEE Computer Society, IEEE Sid 754-2008, dated Jun. 12, 2008, 70 pages. [cited by applicant]
Abdolrashidi et al., “WIREFRAME: Supporting Data-dependent Parallelism through Dependency Graph Execution in GPUs,” ACM, 2017, 12 pages. [cited by applicant]
Zhou et al., “Deadlock Prediction via Generalized Dependency,” ACM, 2022, 12 pages. [cited by applicant]
Gutman et al., “CUDA Graph Usage: CUDA FeatureTesting,” retrieved from <https://web.archive.org/web/20201028074137/https://codingbyexample.com/2020/09/25/cuda-graph-usage/,> 2020, 14 pages. [cited by applicant]
Yu et al., “OpenMP to CUDA Graphs: A Compiler-based Transformation to Enhance the Programmability of NVIDIA Devices,” ACM, 2020, 6 pages. [cited by applicant]
Gray, “Getting Started with CUDA Graph,” retrieved from forums.developer.nvidia.com, Sep. 5, 2019, 9 pages. [cited by applicant]
Jones, “CUDA Graphs Updates,” NVIDIA, Oct. 2022, 35 pages. [cited by applicant]
Clucas et al., “Ripple: Simplified Large-Scale Computation on Heterogenous Architectures with Polymorphic Data Layout”, Journal of Parallel and Distributed Computing, Apr. 20, 2021, 18 pages. [cited by applicant]