IP Library › Granted Patent US 12,585,470
Granted Patent B1
US 12,585,470 · App. 18/803,280 · Granted Mar 24, 2026

Application programming interface to indicate null-operation dependencies

Inventors: David Anthony Fontaine (Mountain View, CA); Steven Arthur Gurfinkel (San Jose, CA)
Assignee: NVIDIA Corporation
G06F9/3838G06F9/3877G06F9/541
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,585,470
App. No.
18/803,280
Granted
Mar 24, 2026
Kind
B1
Abstract

Apparatuses, systems, and techniques to perform an application programming interface (API) to add one or more graph nodes to a software graph, wherein the API is to cause a null-operation graph node 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 nodes are added to a graph in accordance to one or more dependency types.

Claims (61)

1 . A processor comprising:

one or more core complexes, wherein the one or more core complexes include one or more central processing unit (CPU) cores;

one or more graphics complexes, wherein the one or more graphics complexes include one or more compute units (CUs);

an L2 cache;

one or more fabric interconnects;

a memory controller; and

one or more input/output (I/O) interfaces comprising a peripheral component interconnect express (PCIe) interface;

wherein:

the processor is to perform a graph add empty node (GraphAddEmptyNode) application program interface (API) to add an empty node to a graph;

wherein the GraphAddEmpty Node API uses:

a pGraphNode parameter to indicate a node pointer;

a graph parameter to indicate a graph;

a pDependencies parameter to indicate a dependency pointer; and

a numDependencies parameter to indicate a number of dependencies.

2 . The processor of claim 1 , wherein the GraphAddEmptyNode API is to generate the empty node to be added to the graph.

3 . The processor of claim 1 , wherein the node pointer is a pointer to an address corresponding to one or more nodes to be created by the GraphAddEmptyNode API.

4 . The processor of claim 1 , wherein the dependency pointer is to include information corresponding to one or more dependencies between a node indicated by the node pointer and one or more other nodes of the graph indicated by the graph parameter.

5 . The processor of claim 1 , wherein the numDependencies parameter is to indicate a number of dependencies associated with a node indicated by the node pointer.

6 . The processor of claim 1 , wherein the GraphAddEmptyNode API is to generate a status indicating success or failure of performance of the GraphAddEmptyNode API.

7 . The processor of claim 1 , wherein the one or more CUs are to share the L2 cache.

8 . A system comprising:

memory; and

a processor comprising:

one or more core complexes, wherein the one or more core complexes include one or more central processing unit (CPU) cores;

one or more graphics complexes, wherein the one or more graphics complexes include one or more compute units (CUs);

an L2 cache;

one or more fabric interconnects;

a memory controller; and

one or more input/output (I/O) interfaces comprising a peripheral component interconnect express (PCIe) interface;

wherein:

the processor is to perform a graph add empty node (GraphAddEmptyNode) application program interface (API) to add an empty node to a graph;

wherein the GraphAddEmptyNode API uses:

a pGraphNode parameter to indicate a node pointer;

a graph parameter to indicate a graph;

a pDependencies parameter to indicate a dependency pointer; and

a numDependencies parameter to indicate a number of dependencies.

9 . The system of claim 8 , wherein the GraphAddEmptyNode API is to generate the empty node to be added to the graph.

10 . The system of claim 8 , wherein the node pointer is a pointer to an address corresponding to one or more nodes to be created by the GraphAddEmptyNode API.

11 . The system of claim 8 , wherein the dependency pointer is to include information corresponding to one or more dependencies between a node indicated by the node pointer and one or more other nodes of the graph indicated by the graph parameter.

12 . The system of claim 8 , wherein the numDependencies parameter is to indicate a number of dependencies associated with a node indicated by the node pointer.

13 . The system of claim 8 , wherein the GraphAddEmptyNode API is to generate a status indicating success or failure of performance of the GraphAddEmptyNode API.

14 . The system of claim 8 , wherein the one or more CUs are to share the L2 cache.

15 . A method comprising:

performing a graph add empty node (GraphAddEmptyNode) application program interface (API) to add an empty node to a graph;

wherein the GraphAddEmpty Node API uses:

a pGraphNode parameter to indicate a node pointer;

a graph parameter to indicate a graph;

a pDependencies parameter to indicate a dependency pointer; and

a numDependencies parameter to indicate a number of dependencies;

wherein the GraphAddEmptyNode API is to be performed by a processor comprising:

one or more core complexes, wherein the one or more core complexes include one or more central processing unit (CPU) cores;

one or more graphics complexes, wherein the one or more graphics complexes include one or more compute units (CUs);

an L2 cache;

one or more fabric interconnects;

a memory controller; and

one or more input/output (I/O) interfaces comprising a peripheral component interconnect express (PCIe) interface.

16 . The method of claim 15 , wherein the GraphAddEmptyNode API is to generate the empty node to be added to the graph.

17 . The method of claim 15 , wherein the node pointer is a pointer to an address corresponding to one or more nodes to be created by the GraphAddEmptyNode API.

18 . The method of claim 15 , wherein the dependency pointer is to include information corresponding to one or more dependencies between a node indicated by the node pointer and one or more other nodes of the graph indicated by the graph parameter.

19 . The method of claim 15 , wherein the numDependencies parameter is to indicate a number of dependencies associated with a node indicated by the node pointer.

20 . The method of claim 15 , wherein the GraphAddEmptyNode API is to generate a status indicating success or failure of performance of the GraphAddEmptyNode API.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2024
From: FONTAINE, DAVID ANTHONY; GURFINKEL, STEVEN ARTHUR
To: NVIDIA CORPORATION
Reel/Frame 068272/0736 →
Continuity (1)
Continuation 18114672 · Feb 27, 2023
References Cited (107)
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 et al. · 2017 [cited by applicant]
US 10417058B1 · Kesler · 2019 [cited by applicant]
US 10540270B1 · Surkatty et al. · 2020 [cited by applicant]
US 10673712B1 · Gosar et al. · 2020 [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 12073263B1 · Thompson · 2024 [cited by applicant]
US 12159217B1 · Borkovic · 2024 [cited by applicant]
US 12443462B1 · Fontaine et al. · 2025 [cited by applicant]
US 20040088666A1 · Poznanovic et al. · 2004 [cited by applicant]
US 20050034106A1 · Kornerup et al. · 2005 [cited by applicant]
US 20050155034A1 · Jiang et al. · 2005 [cited by applicant]
US 20050174984A1 · O'Neill · 2005 [cited by applicant]
US 20070174494A1 · Bonwick et al. · 2007 [cited by applicant]
US 20070220031A1 · MacMahon et al. · 2007 [cited by applicant]
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 20100079462A1 · Breeds et al. · 2010 [cited by applicant]
US 20100333110A1 · Luo et al. · 2010 [cited by applicant]
US 20120008530A1 · Kulkarni et al. · 2012 [cited by applicant]
US 20120072887A1 · Basak · 2012 [cited by applicant]
US 20120278365A1 · Labat et al. · 2012 [cited by applicant]
US 20130127891A1 · Kim et al. · 2013 [cited by applicant]
US 20130212131A1 · Reddy · 2013 [cited by applicant]
US 20150006644A1 · Anantharam et al. · 2015 [cited by applicant]
US 20150016257A1 · Kumar et al. · 2015 [cited by applicant]
US 20150288595A1 · Suzuki · 2015 [cited by applicant]
US 20160210720A1 · Taylor et al. · 2016 [cited by applicant]
US 20160210724A1 · Taylor et al. · 2016 [cited by applicant]
US 20160253625A1 · Casey · 2016 [cited by applicant]
US 20160307353A1 · Ligenza et al. · 2016 [cited by applicant]
US 20170286526A1 · Bar-Or et al. · 2017 [cited by applicant]
US 20170373946A1 · Lewandowski et al. · 2017 [cited by applicant]
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 20200050633A1 · Evans et al. · 2020 [cited by applicant]
US 20200057748A1 · Danilak · 2020 [cited by examiner]
US 20200136891A1 · Mdini et al. · 2020 [cited by applicant]
US 20200310937A1 · Takeda · 2020 [cited by applicant]
US 20200364088A1 · Ashwathnarayan 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 20200409709A1 · ChoFleming · 2020 [cited by examiner]
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 20210089368A1 · Goosen et al. · 2021 [cited by applicant]
US 20210096921A1 · Banerjee · 2021 [cited by examiner]
US 20210133089A1 · Khillar et al. · 2021 [cited by applicant]
US 20210149719A1 · Jones et al. · 2021 [cited by applicant]
US 20210149734A1 · Gurfinkel et al. · 2021 [cited by applicant]
US 20210232579A1 · Schechter · 2021 [cited by examiner]
US 20210248115A1 · Jones · 2021 [cited by examiner]
US 20210311727A1 · Khullar · 2021 [cited by applicant]
US 20210318908A1 · Cavus · 2021 [cited by examiner]
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 20230185634A1 · Fontaine 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 20240118965A1 · Ashrafi et al. · 2024 [cited by applicant]
US 20240168795A1 · Edwards et al. · 2024 [cited by applicant]
US 20240220314A1 · Gasparakis · 2024 [cited by examiner]
US 20240289187A1 · Fontaine et al. · 2024 [cited by applicant]
Nvidia, “CUDA Runtime API, Reference Manual,” Jan. 2022, <https://docs.nvidia.com/cuda/archive/11.6.0/pdf/CUDA_Runtime_API.pdf>, Chapter 6.30, 638 pages. [cited by applicant]
Gray, “Getting Started with CUDA Graphs,” retrieved from forums.developer.nvidia.com, Sep. 5, 2019, 9 pages. [cited by applicant]
Jones, “CUDA Graph Updates,” NVIDIA, Oct. 2022, 35 pages. [cited by applicant]
IEEE, “IEEE Standard for Floating-Point Arithmetic,” Microprocessor Standards Committee of the IEEE Computer Society, IEEE Std 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 Feature Testing,” 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]
Cited By (1)
US 12,705,034