IP Library › Granted Patent US 12,443,462
Granted Patent B1
US 12,443,462 · App. 18/114,831 · Granted Oct 14, 2025

Application programming interface using node dependencies

Inventors: David Anthony Fontaine (Mountain View, CA); Steven Arthur Gurfinkel (San Jose, CA)
Assignee: NVIDIA Corporation
G06F9/5072
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,443,462
App. No.
18/114,831
Granted
Oct 14, 2025
Kind
B1
Abstract

Apparatuses, systems, and techniques to perform an application programming interface (API) to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated. In at least one embodiment, one or more dependency types from a graph are indicated.

Claims (25)

1. A processor, comprising:

one or more circuits to perform an application programming interface (API) to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based on an input parameter to the API indicating the one or more user-indicated graph nodes, and the dependency type information indicating one or more constraints on scheduling a first operation corresponding to a first graph node and a second operation corresponding to the one or more user-indicated graph nodes.

2. The processor of claim 1 , wherein the API is to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based, at least in part, on identifying one or more edges to the software graph, the one or more edges are dependent on or dependent from the one or more user-indicated graph nodes.

3. The processor of claim 1 , wherein the API is to receive an indication of a source node of the one or more user-indicated graph nodes, the source node having a dependency with one or more destination nodes of the software graph.

4. The processor of claim 1 , wherein the API is to cause one or more edges of the software graph to be indicated.

5. The processor of claim 1 , wherein the dependency type information includes a dependency which is one or more of a full execution dependency, a launch order dependency, or an anti-deadlock dependency.

6. The processor of claim 1 , wherein the one or more user-indicated graph nodes are to be performed by one or more graphics processing units (GPUs).

7. The processor of claim 1 , wherein the API is to receive a set of parameters comprising an identifier of the one or more user-indicated graph nodes.

8. A computer-implemented method comprising:

performing an application programming interface (API) to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based on an input parameter to the API indicating the one or more user-indicated graph nodes, and the dependency type information indicating one or more constraints on scheduling a first operation corresponding to a first graph node and a second operation corresponding to the one or more user-indicated graph nodes.

9. The computer-implemented method of claim 8 , wherein the API is to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based, at least in part, on:

identifying one or more edges to the software graph, the one or more edges dependent on or dependent from the one or more user-indicated graph nodes; and

annotating the one or more edges with the dependency type information.

10. The computer-implemented method of claim 8 , wherein the API is to receive an indication of a source node of the one or more user-indicated graph nodes, the source node having a dependency with one or more destination nodes of the software graph.

11. The computer-implemented method of claim 8 , wherein the API is to cause one or more edges of the software graph to be indicated.

12. The computer-implemented method of claim 8 , wherein the dependency type information includes a dependency which is one or more of a full execution dependency, a launch order dependency, or an anti-deadlock dependency.

13. The computer-implemented method of claim 8 , wherein the one or more user-indicated graph nodes are to be performed by one or more graphics processing units (GPUs).

14. The computer-implemented method of claim 8 , wherein the API is to receive a set of parameters comprising an identifier of the one or more user-indicated graph nodes.

15. 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 cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based on an input parameter to the API indicating the one or more user-indicated graph nodes, and the dependency type information indicating one or more constraints on scheduling a first operation corresponding to a first graph node and a second operation corresponding to the one or more user-indicated graph nodes.

16. The computer system of claim 15 , wherein the API is to cause dependency type information of one or more user-indicated graph nodes of a software graph to be indicated based, at least in part, on identifying one or more edges to the software graph, the one or more edges are dependent on or dependent from the one or more user-indicated graph nodes.

17. The computer system of claim 15 , wherein the API is to receive an indication of a source node of the one or more user-indicated graph nodes, the source node having a dependency with one or more destination nodes of the software graph.

18. The computer system of claim 15 , wherein the API is to cause one or more edges of the software graph to be indicated.

19. The computer system of claim 15 , wherein the dependency type information includes a dependency which is one or more of a full execution dependency, a launch order dependency, or an anti-deadlock dependency.

20. The computer system of claim 15 , wherein the API is to receive a set of parameters comprising an identifier of the one or more user-indicated graph nodes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2023
From: FONTAINE, DAVID ANTHONY; GURFINKEL, STEVEN ARTHUR
To: NVIDIA CORPORATION
Reel/Frame 063019/0835 →
References Cited (61)
US 5689711A · Bardasz et al. · 1997 [cited by applicant]
US 6937969B1 · Vandersteen et al. · 2005 [cited by applicant]
US 8115773B2 · Swift et al. · 2012 [cited by applicant]
US 8239404B2 · Zhou et al. · 2012 [cited by applicant]
US 9251225B2 · Stanfill · 2016 [cited by applicant]
US 9372670B1 · Cartey · 2016 [cited by examiner]
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 10673712B1 · Gosar · 2020 [cited by examiner]
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 12159217B1 · Borkovic · 2024 [cited by applicant]
US 20050155034A1 · Jiang et al. · 2005 [cited by applicant]
US 20070220031A1 · MacMahon et al. · 2007 [cited by applicant]
US 20080278482A1 · Farmanbar et al. · 2008 [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 examiner]
US 20150016257A1 · Kumar et al. · 2015 [cited by applicant]
US 20160210720A1 · Taylor et al. · 2016 [cited by applicant]
US 20160307353A1 · Ligenza et al. · 2016 [cited by applicant]
US 20170286526A1 · Bar-Or 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 20180218259A1 · Braz et al. · 2018 [cited by applicant]
US 20190188055A1 · Hunt et al. · 2019 [cited by applicant]
US 20190327154A1 · Sahoo et al. · 2019 [cited by applicant]
US 20190339966A1 · Moondhra · 2019 [cited by examiner]
US 20190370061A1 · Shah et al. · 2019 [cited by applicant]
US 20190370407A1 · Dickie · 2019 [cited by applicant]
US 20190370927A1 · Frenkel · 2019 [cited by examiner]
US 20200136891A1 · Mdini et al. · 2020 [cited by applicant]
US 20200396075A1 · Visegrady 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 20210232579A1 · Schechter et al. · 2021 [cited by applicant]
US 20210248115A1 · Jones 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 20220334891A1 · Fontaine · 2022 [cited by applicant]
US 20230005097A1 · Gurfinkel 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 20240289187A1 · Fontaine et al. · 2024 [cited by applicant]
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]
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 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]
Cited By (9)
US 12,585,470 US 12,602,230 US 12,619,480 US 12,639,054 US 12,663,995 US 12,688,019 US 12,705,060 US 12,717,561 US 12,749,141