IP Library Granted Patent US 12,705,282
Granted Patent B2
US 12,705,282 · App. 18/492,243 · Granted Aug 11, 2026

Systems and methods for processing using directed acyclic graphs

Inventors: Colin D. Rosendahl (Richardson, TX); Temitope Ibukunoluwa Oladipo (Plano, TX); Adam Benjamin Nunez (Wylie, TX); Matthew Joshua Tijerina (Richardson, TX); Adam Smith (McKinney, TX); Hugens Ulysse (Dallas, TX)
Assignee: State Farm Mutual Automobile Insurance Company
G06F16/9024G06F8/31G06F8/35G06F8/36G06F8/433G06F9/4843G06F9/547G06N7/01G06Q10/0633G06Q10/103
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,705,282
App. No.
18/492,243
Filed
Oct 23, 2023
Granted
Aug 11, 2026
Kind
B2
Art Unit
2164
USPC
707/798
Abstract

A computer system for executing a processing graph including: (A) accessing a graph definition of the processing graph from a nodes database, each node of the processing graph representing a component of computation performed by at least one program referenced by that node; (B) constructing the processing graph in the at least one memory device; (C) identifying at least one group of nodes in the processing graph; (D) traversing the at least one group of nodes; (E) upon visiting a node of the at least one group of nodes, accessing a node definition of the node from the nodes database, the node definition identifying a program referenced by the node; (F) executing the program to generate an output; and (G) passing the output to a parent node of the node, the parent node using the output during processing of the parent node.

Claims (50)

1 . A computer system for executing computational components in accordance with a custom processing graph comprising a plurality of nodes, wherein each node of the plurality of nodes defines one of the computational components comprising at least one computer program referenced by that node, the computer system comprising at least one processor in communication with at least one memory device, the at least one processor programmed to:

access, from a nodes database, a graph definition to construct the custom processing graph, the graph definition identifying the plurality of nodes for the custom processing graph and one or more edges, each edge of the one or more edges connecting a pair of nodes of the identified plurality of nodes;

provide a graphical user interface configured to receive user input from a user;

construct a root node for the custom processing graph based upon the user input;

perform a lookup, within the nodes database, for the identified plurality of nodes;

construct the custom processing graph in the at least one memory device by:

in response to not finding an identified node of the identified plurality of nodes, (i) marking the identified node as a missing node and (ii) generating an error for the missing node;

correcting the error by performing at least one of (i) adding the missing node to the custom processing graph, (ii) editing a parent node of the missing node to avoid reliance on the missing node, or (iii) constructing a custom node to stand in for the missing node; and

creating, using the one mor more edges, dependencies and links between the root node and one or more identified nodes of the identified plurality of nodes found in the lookup, thereby enabling automatic detection and integration of dependent computational components defined by the identified plurality of nodes;

receive an input to generate a particular output for each of thousands of data record identifiers;

identify, using the received input, at least one group of the identified plurality of nodes in the custom processing graph, the identified at least one group associated with the thousands of data record identifiers;

traverse, for each of the thousands of data record identifiers, the identified at least one group of nodes by starting at the root node and visiting each identified node of the identified at least one group of nodes;

upon visiting each identified node, access a node definition of the identified node from the nodes database, the node definition identifying (i) a computer program referenced by the identified node and (ii) the particular output to be generated by executing the identified computer program;

in response to identifying the computer program referenced each identified node, execute the identified computer program to generate the particular output;

in response to generating the particular output, pass the particular output to an identified parent node of the identified node, the identified parent node using the particular output during processing of the identified parent node; and

in response to processing the identified parent node and the root node, generate a final output.

2 . The computer system of claim 1 , wherein identifying the at least one group of nodes in the custom processing graph comprises identifying a first group of nodes and second group of nodes in the custom processing graph.

3 . The computer system of claim 2 , wherein traversing the identified at least one group of nodes comprises traversing the first group of nodes in the custom processing graph to visit and process each node in the first group and traversing the second group of nodes in the custom processing graph to visit and process each node in the second group.

4 . The computer system of claim 3 , wherein the first group of nodes and the second group of nodes are traversed simultaneously.

5 . The computer system of claim 1 , wherein the at least one processor is further programmed to provide the graphical user interface configured to receive the user input from the user prior to execution of the custom processing graph, the user input modifying a virtual data structure of the custom processing graph by adding, editing, replacing, or deleting one or more of the identified plurality of nodes within the custom processing graph, thereby reducing memory consumption by loading only the modified virtual data structure and associated computations for executing the custom processing graph.

6 . The computer system of claim 1 , wherein the node includes a child node, wherein execution of the computer program further includes visiting the child node.

7 . The computer system of claim 6 , wherein visiting the child node includes passing input data from the node to the child node, and wherein visiting the child node further includes using the input data to execute another computer program to generate child output data.

8 . The computer system of claim 7 , wherein visiting the child node further includes passing the child output data from the child node to the node.

9 . The computer system of claim 7 , wherein executing the computer program further includes using the child output data to generate the particular output.

10 . The computer system of claim 1 , wherein executing the computer program includes executing the computer program based upon an embedded programming language provided on the computer system.

11 . A computer-implemented method for executing computational components in accordance with a custom processing graph including a plurality of nodes, wherein each node of the plurality of nodes defines one of the computational component including at least one computer program referenced by that node, the method implemented by a computer system including at least one processor in communication with at least one memory device, the method comprising:

accessing, from a nodes database, a graph definition to construct the custom processing graph from, the graph definition identifying the plurality of nodes for the custom processing graph and one or more edges, each edge of the one or more edges connecting a pair of nodes of the identified plurality of nodes;

providing a graphical user interface configured to receive user input from a user;

constructing a root node for the custom processing graph based upon the user input;

performing a lookup, within the nodes database, for the identified plurality of nodes;

constructing the custom processing graph in the at least one memory device by:

in response to not finding an identified node of the identified plurality of nodes, (i) marking the identified node as a missing node and (ii) generating an error for the missing node;

correcting the error by performing at least one of (i) adding the missing node to the custom processing graph, (ii) editing a parent node of the missing node to avoid reliance on the missing node, or (iii) constructing a custom node to stand in for the missing node; and

creating, using the one mor more edges, dependencies and links between the root node and one or more identified nodes of the identified plurality of nodes found in the lookup, thereby enabling automatic detection and integration of dependent computational components defined by the plurality of nodes;

receiving an input to generate a particular output for each of thousands of data record identifiers;

identifying, using the received input, at least one group of the identified plurality of nodes in the custom processing graph, the identified at least one group associated with the thousands of data record identifiers;

traversing, for each of the thousands of data record identifiers, the identified at least one group of nodes starting at the root node and visiting each identified node of the identified at least one group of nodes;

upon visiting identified node, accessing a node definition of the identified node from the nodes database, the node definition identifying (i) a computer program referenced by the identified node and (ii) the particular output to be generated by executing the identified computer program;

response to identifying the computer program referenced each identified node, executing the identified computer program to generate the particular output;

in response to generating the particular output, passing the particular output to an identified parent node of the identified node, the identified parent node using the particular output during processing of the identified parent node; and

in response to processing the identified parent node and the root node, generating a final output.

12 . The computer-implemented method of claim 11 , wherein identifying the at least one group of nodes in the custom processing graph comprises identifying a first group of nodes and second group of nodes in the custom processing graph.

13 . The computer-implemented method of claim 12 , wherein traversing the identified at least one group of nodes comprises traversing the first group of nodes in the custom processing graph to visit and process each node in the first group and traversing the second group of nodes in the custom processing graph to visit and process each node in the second group.

14 . The computer-implemented method of claim 13 , wherein the first group of nodes and the second group of nodes are traversed simultaneously.

15 . The computer-implemented method of claim 11 , wherein the at least one processor is further programmed to provide the graphical user interface configured to receive the user input from the user prior to execution of the custom processing graph, the user input modifying a virtual data structure of the custom processing graph by adding, editing, replacing, or deleting one or more of the identified plurality of nodes within the custom processing graph, thereby reducing memory consumption by loading only the modified virtual data structure and associated computations for executing the custom processing graph.

16 . The computer-implemented method of claim 11 , wherein the node includes a child node, wherein execution of the computer program further includes visiting the child node.

17 . The computer-implemented method of claim 16 , wherein visiting the child node includes passing input data from the node to the child node, wherein visiting the child node includes using the input data to execute another computer program to generate child output data.

18 . The computer-implemented method of claim 17 , wherein visiting the child node further includes passing the child output data from the child node to the node.

19 . The computer-implemented method of claim 17 , wherein executing the computer program further includes using the child output data to generate the particular output.

20 . The computer-implemented method of claim 11 , wherein executing the computer program includes executing the computer program based upon an embedded programming language provided on the computer system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2023
From: ROSENDAHL, COLIN D.; OLADIPO, TEMITOPE IBUKUNOLUWA; NUNEZ, ADAM BENJAMIN; TIJERINA, MATTHEW JOSHUA; SMITH, ADAM; ULYSSE, HUGENS
To: STATE FARM MUTUAL AUTOMOBILE INSURANCE COMPANY
Reel/Frame 065310/0662 →
Continuity (4)
Continuation 17074283 · Oct 19, 2020
Provisional Application 63064702 · Aug 12, 2020
Provisional Application 63035279 · Jun 5, 2020
Related Publication 20240119092A1 · Apr 11, 2024
References Cited (84)
US 5887139A · Madison, Jr. · 1999 [cited by examiner]
US 6115040A · Bladow · 2000 [cited by examiner]
US 6128016A · Coelho · 2000 [cited by examiner]
US 7656857B2 · Thubert et al. · 2010 [cited by applicant]
US 8209701B1 · Roytman et al. · 2012 [cited by applicant]
US 8301755B2 · De Peuter et al. · 2012 [cited by applicant]
US 8387066B1 · Becher et al. · 2013 [cited by applicant]
US 8788556B2 · Zhang et al. · 2014 [cited by applicant]
US 9244899B1 · Greenbaum · 2016 [cited by examiner]
US 9753751B2 · Atterbury et al. · 2017 [cited by applicant]
US 9922376B1 · Wang et al. · 2018 [cited by applicant]
US 10109014B1 · Bischoff et al. · 2018 [cited by applicant]
US 10163156B1 · Shapley et al. · 2018 [cited by applicant]
US 10372807B1 · Greenbaum · 2019 [cited by examiner]
US 10445451B2 · Fleming et al. · 2019 [cited by applicant]
US 10672078B1 · Tagny Diesse · 2020 [cited by applicant]
US 10733165B1 · Broad · 2020 [cited by applicant]
US 11030187B1 · Boodman et al. · 2021 [cited by applicant]
US 11361027B2 · Reehil et al. · 2022 [cited by applicant]
US 11397713B2 · Maharajh et al. · 2022 [cited by applicant]
US 11507741B2 · Maguire et al. · 2022 [cited by applicant]
US 20020052941A1 · Patterson · 2002 [cited by examiner]
US 20060059461A1 · Baker et al. · 2006 [cited by applicant]
US 20070169019A1 · Leino et al. · 2007 [cited by applicant]
US 20080134138A1 · Chamieh · 2008 [cited by applicant]
US 20080163124A1 · Bonev · 2008 [cited by examiner]
US 20080262815A1 · Tian et al. · 2008 [cited by applicant]
US 20090077478A1 · Gillingham · 2009 [cited by examiner]
US 20090222825A1 · Upadhyaya et al. · 2009 [cited by applicant]
US 20110105143A1 · Harple et al. · 2011 [cited by applicant]
US 20110173258A1 · Arimilli · 2011 [cited by examiner]
US 20110321051A1 · Rastogi · 2011 [cited by examiner]
US 20120291045A1 · Martin · 2012 [cited by applicant]
US 20130125133A1 · Schuster · 2013 [cited by applicant]
US 20130290975A1 · Olivier · 2013 [cited by applicant]
US 20140081896A1 · Ranganathan · 2014 [cited by examiner]
US 20140108463A1 · Gagliardi et al. · 2014 [cited by applicant]
US 20140366037A1 · Berretta et al. · 2014 [cited by applicant]
US 20150052441A1 · Degioanni · 2015 [cited by examiner]
US 20150143381A1 · Chin et al. · 2015 [cited by applicant]
US 20160062804A1 · Stanfill · 2016 [cited by examiner]
US 20160103706A1 · Novaes · 2016 [cited by examiner]
US 20160232470A1 · Zhou · 2016 [cited by applicant]
US 20160334960A1 · Brown · 2016 [cited by examiner]
US 20160350080A1 · Ravindran et al. · 2016 [cited by applicant]
US 20170063886A1 · Muddu · 2017 [cited by examiner]
US 20180053328A1 · Simonovic · 2018 [cited by applicant]
US 20180203673A1 · Ravishankar et al. · 2018 [cited by applicant]
US 20180232259A1 · Chowdhury et al. · 2018 [cited by applicant]
US 20190005161A1 · Fleming et al. · 2019 [cited by applicant]
US 20190121810A1 · Zhuang et al. · 2019 [cited by applicant]
US 20190188261A1 · Herzig et al. · 2019 [cited by applicant]
US 20190213613A1 · Schumacher · 2019 [cited by examiner]
US 20190235742A1 · Tilikin et al. · 2019 [cited by applicant]
US 20190354348A1 · Stanfill · 2019 [cited by examiner]
US 20200272433A1 · Wang · 2020 [cited by examiner]
US 20210026756A1 · Magnezi · 2021 [cited by applicant]
US 20210026894A1 · Yang et al. · 2021 [cited by applicant]
US 20210248115A1 · Jones et al. · 2021 [cited by applicant]
US 20210248445A1 · Zhou et al. · 2021 [cited by applicant]
US 20210320794A1 · Auh et al. · 2021 [cited by applicant]
US 20210357400A1 · Bauer · 2021 [cited by examiner]
US 20210390420A1 · Barnett · 2021 [cited by applicant]
US 20220012812A1 · Roll et al. · 2022 [cited by applicant]
US 20220019896A1 · Vasudevan et al. · 2022 [cited by applicant]
US 20220075515A1 · Floren et al. · 2022 [cited by applicant]
CN 111523784A · 2020 [cited by applicant]
Hierarchical Parallel Dynamic Dependence Analysis for Recursively Task-Parallel Programs; Nikolaos Papakonstantinou, Foivos Zakkak, Polyvios Pratikakis (Year: 2016). [cited by applicant]
High Level Support For Divide-and-Conquer Parallelism; Attila Gursoy and L.V. Kale (Year: 1991). [cited by applicant]
A Graph-based Approach for Contextual Service Loading in Pervasive Environments; Amira Ben Hamida and Frederic Le Mouel and Stephane Frenot and Mohamed Ahmed (Year: 2008). [cited by applicant]
Effective cooperative scheduling of task-parallel applications on multiprogrammed parallel architectures; Georgios Varisteas, Chapter 3; Royal institute of Technology Doctoral Thesis (Year: 2015). [cited by applicant]
Allocation of Computations with Dynamic Structures on Hypercube Based Distributed Systems Ishfaq Ahmad, Arif Ghafoor, and Geoffrey C. Fox (Year: 1992). [cited by applicant]
Applying Cilk in Provably Efficient Task Scheduling Yoon-Yee Vee and Wen-Jing Hsu (Year: 1999). [cited by applicant]
Computational Graphs Sargur N. Srihari “Deep Learning” course lecture slides, University at Buffalo NY (Year: 2020). [cited by applicant]
Demand-driven Execution of Static Directed Acyclic Graphs Using Task Parallelism Prabhanjan Kambadur, Anshul Gupta, Torsten Hoefler and Andrew Lumsdaine (Year: 2009). [cited by applicant]
Interactive Problem Solving Using Task Configuration and Control Elaine Kant, Schlumberger-Doll (Year: 1988). [cited by applicant]
POEMS: End-to-End Performance Design of Large Parallel Adaptive Computational Systems Vikram S. Adve, Rajive Bagrodia, James C. Browne, Ewa Deelman, Aditya Dube, Elias N. Houstis, John Rice, Rizos Sakellariou, David J. … [cited by applicant]
VMMP: A Practical Tool for the Development of Portable and Efficient Programs for Multiprocessors ERAN GABBER (Year: 1990). [cited by applicant]
Distributed Seismic Unix, Alejandro E. Murillo (Year: 1996). [cited by applicant]
Allombert et al., “Multi-ML: Programming Multi-BSP Algorithms in ML”, International Journal of Parallel Programming, pp. 20, hal-01160164v3, (Year: 2016). [cited by applicant]
Kim et al., “WW-FLOW: Web-Based Workflow Management with Runtime Encapsulation”, IEEE Internet Computing, (Year: 2000). [cited by applicant]
Miller, “The Task Graph Pattern”, Parallel Programming Partners (ParaPLoP 10) (Year: 2010). [cited by applicant]
Sun et al., “Developing a Workflow Design Framework Based on Dataflow Analysis”, Proceedings of the 41st Hawaii International Conference on System Sciences, (Year: 2008). [cited by applicant]
Shafaq B. Chaudhry et al., “Pareto-based evolutionary computational approach for wireless sensor placement”, Engineering Applications of A. [cited by applicant]