IP Library › Granted Patent US 11,709,059
Granted Patent B2
US 11,709,059 · App. 16/726,010 · Granted Jul 25, 2023

Asynchronous execution graphs for autonomous vehicles

Inventors: Ouais Alsharif (Mountain View, CA); Ian Michael Wilkes (Palo Alto, CA)
Assignee: Waymo LLC
G01C21/30G06F9/4843G06F9/5038G01C21/3446
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 11,709,059
App. No.
16/726,010
Granted
Jul 25, 2023
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for executing the operations represented by an asynchronous execution graph. One of the methods includes receiving data characterizing an asynchronous execution graph comprising one or more subgraphs, wherein each subgraph comprises a plurality of nodes connected by edges, the plurality of nodes comprising a source node, one or more processor nodes, and one or more sink nodes; receiving source data from an external system that corresponds to the source node of a first subgraph in the graph; in response, executing the operations represented by the processor nodes in the first subgraph; and executing the operations represented by each sink node in the first subgraph.

Claims (99)

1. A method performed by one or more processors located on-board a vehicle, comprising:

receiving data characterizing an asynchronous execution graph comprising one or more subgraphs,

wherein each subgraph comprises a plurality of nodes connected by edges, the plurality of nodes comprising a source node, one or more processor nodes, and one or more sink nodes, wherein:

the source node represents operations comprising receiving source data from a corresponding external system and providing the source data to one or more processor nodes;

each processor node has one or more parent nodes and one or more child nodes;

each parent node is either the source node of the subgraph or another processor node in the subgraph;

each child node is either a sink node of the subgraph or another processor node in the subgraph, and

each processor node represents operations comprising i) receiving input data from the parent nodes of the processor node, ii) processing the input data to generate output data, and iii) providing the output data to the child nodes of the subgraph; and

each sink node represents operations comprising receiving sink data from one or more parent processor nodes and publishing the sink data to a corresponding external system, and

receiving source data from an external system that corresponds to the source node of a first subgraph in the graph;

in response, executing the operations represented by the first subgraph, comprising, for each processor node:

determining whether to execute the operations represented by the processor node; and

in response to determining not to execute the operations represented by the processor node, sending a placeholder value to each child node of the processor node, wherein the placeholder value is a piece of data indicating that a parent node of the child node to which the placeholder value is sent is not executing the operations represented by the parent node during the execution of the first subgraph; and

executing the operations represented by each sink node in the first subgraph.

2. The method of claim 1 , wherein each subgraph comprises a plurality of edges, the plurality of edges comprising one or more forward edges, wherein:

each forward edge represents a flow of data from a parent node to a child node; and

the one or more forward edges define a topological sorting of the nodes in the subgraph, wherein a first node in the topological sorting is the source node of the subgraph and a last node in the topological sorting is a sink node of the subgraph.

3. The method of claim 2 , wherein:

the plurality of edges further comprise one or more backward edges, wherein each backward edge represents operations comprising passing backward data from a later node to an earlier node, wherein the earlier node is before the later node in the topological sorting; and

the operations represented by each processor node further comprise receiving either backward data or a placeholder value from every later node that shares a backward edge with the processor node.

4. The method of claim 1 , wherein:

the one or more subgraphs comprise one or more processor nodes that are mutating nodes, wherein each mutating node represents operations comprising mutating input data of one or more parent nodes of the mutating node; and

executing the operations represented by each processor node in the first subgraph comprises executing operations represented by each mutating node, comprising mutating input data of the mutating node after the operations represented by every other processor node that receives as input the input data of the mutating node have completed execution.

5. The method of claim 1 , wherein

determining whether to execute the operations represented by the processor node comprises determining, according to a set of processor node rules, whether to execute the operations represented by the processor node; and

executing the operations represented by the first subgraph further comprises, for each processor node:

in response to determining to execute the operations represented by the processor node:

generating output data by executing the operations represented by the processor node, and

sending the output data to each child node of the processor node.

6. The method of claim 1 , wherein each sink node represents operations further comprising:

receiving either sink data or a placeholder value from each parent node of the sink node;

determining, according to a set of sink node rules, whether to publish the sink data; and

if determining to publish the sink data, providing the sink data to a corresponding external system.

7. The method of claim 1 , wherein the plurality of nodes comprises one or more listeners, wherein:

each listener is triggered by a corresponding subset of the plurality of nodes in the sub-graph and represents operations comprising:

determining whether the nodes in the corresponding subset have produced outputs; and

in response to determining that the nodes in the corresponding subset have produced outputs, publishing an output to a corresponding external system.

8. A system located on-board a vehicle, wherein the system comprises one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving data characterizing an asynchronous execution graph comprising one or more subgraphs,

wherein each subgraph comprises a plurality of nodes connected by edges, the plurality of nodes comprising a source node, one or more processor nodes, and one or more sink nodes, wherein:

the source node represents operations comprising receiving source data from a corresponding external system and providing the source data to one or more processor nodes;

each processor node has one or more parent nodes and one or more child nodes;

each parent node is either the source node of the subgraph or another processor node in the subgraph;

each child node is either a sink node of the subgraph or another processor node in the subgraph, and

each processor node represents operations comprising i) receiving input data from the parent nodes of the processor node, ii) processing the input data to generate output data, and iii) providing the output data to the child nodes of the subgraph; and

each sink node represents operations comprising receiving sink data from one or more parent processor nodes and publishing the sink data to a corresponding external system, and

receiving source data from an external system that corresponds to the source node of a first subgraph in the graph;

in response, executing the operations represented by the first subgraph, comprising, for each processor node:

determining whether to execute the operations represented by the processor node; and

in response to determining not to execute the operations represented by the processor node, sending a placeholder value to each child node of the processor node, wherein the placeholder value is a piece of data indicating that a parent node of the child node to which the placeholder value is sent is not executing the operations represented by the parent node during the execution of the first subgraph; and

executing the operations represented by each sink node in the first subgraph.

9. The system of claim 8 , wherein each subgraph comprises a plurality of edges, the plurality of edges comprising one or more forward edges, wherein:

each forward edge represents a flow of data from a parent node to a child node; and

the one or more forward edges define a topological sorting of the nodes in the subgraph, wherein a first node in the topological sorting is the source node of the subgraph and a last node in the topological sorting is a sink node of the subgraph.

10. The system of claim 9 , wherein:

the plurality of edges further comprise one or more backward edges, wherein each backward edge represents operations comprising passing backward data from a later node to an earlier node, wherein the earlier node is before the later node in the topological sorting; and

the operations represented by each processor node further comprise receiving either backward data or a placeholder value from every later node that shares a backward edge with the processor node.

11. The system of claim 8 , wherein:

the one or more subgraphs comprise one or more processor nodes that are mutating nodes, wherein each mutating node represents operations comprising mutating input data of one or more parent nodes of the mutating node; and

executing the operations represented by each processor node in the first subgraph comprises executing operations represented by each mutating node, comprising mutating input data of the mutating node after the operations represented by every other processor node that receives as input the input data of the mutating node have completed execution.

12. The system of claim 8 , wherein

determining whether to execute the operations represented by the processor node comprises determining, according to a set of processor node rules, whether to execute the operations represented by the processor node; and

executing the operations represented by the first subgraph further comprises, for each processor node:

in response to determining to execute the operations represented by the processor node:

generating output data by executing the operations represented by the processor node, and

sending the output data to each child node of the processor node.

13. The system of claim 8 , wherein each sink node represents operations further comprising:

receiving either sink data or a placeholder value from each parent node of the sink node;

determining, according to a set of sink node rules, whether to publish the sink data; and

if determining to publish the sink data, providing the sink data to a corresponding external system.

14. One or more non-transitory computer readable storage media located on-board a vehicle and encoded with computer program instructions that when executed by a plurality of computers cause the plurality of computers to perform operations comprising:

receiving data characterizing an asynchronous execution graph comprising one or more subgraphs,

wherein each subgraph comprises a plurality of nodes connected by edges, the plurality of nodes comprising a source node, one or more processor nodes, and one or more sink nodes, wherein:

the source node represents operations comprising receiving source data from a corresponding external system and providing the source data to one or more processor nodes;

each processor node has one or more parent nodes and one or more child nodes;

each parent node is either the source node of the subgraph or another processor node in the subgraph;

each child node is either a sink node of the subgraph or another processor node in the subgraph, and

each processor node represents operations comprising i) receiving input data from the parent nodes of the processor node, ii) processing the input data to generate output data, and iii) providing the output data to the child nodes of the subgraph; and

each sink node represents operations comprising receiving sink data from one or more parent processor nodes and publishing the sink data to a corresponding external system, and

receiving source data from an external system that corresponds to the source node of a first subgraph in the graph;

in response, executing the operations represented by the first subgraph, comprising, for each processor node:

determining whether to execute the operations represented by the processor node; and

in response to determining not to execute the operations represented by the processor node, sending a placeholder value to each child node of the processor node, wherein the placeholder value is a piece of data indicating that a parent node of the child node to which the placeholder value is sent is not executing the operations represented by the parent node during the execution of the first subgraph; and

executing the operations represented by each sink node in the first subgraph.

15. The non-transitory computer readable storage media of claim 14 , wherein each subgraph comprises a plurality of edges, the plurality of edges comprising one or more forward edges, wherein:

each forward edge represents a flow of data from a parent node to a child node; and

the one or more forward edges define a topological sorting of the nodes in the subgraph, wherein a first node in the topological sorting is the source node of the subgraph and a last node in the topological sorting is a sink node of the subgraph.

16. The non-transitory computer readable storage media of claim 15 , wherein:

the plurality of edges further comprise one or more backward edges, wherein each backward edge represents operations comprising passing backward data from a later node to an earlier node, wherein the earlier node is before the later node in the topological sorting; and

the operations represented by each processor node further comprise receiving either backward data or a placeholder value from every later node that shares a backward edge with the processor node.

17. The non-transitory computer readable storage media of claim 14 , wherein:

the one or more subgraphs comprise one or more processor nodes that are mutating nodes, wherein each mutating node represents operations comprising mutating input data of one or more parent nodes of the; and

executing the operations represented by each processor node in the first subgraph comprises executing operations represented by each mutating node, comprising mutating input data of the mutating node after the operations represented by every other processor node that receives as input the input data of the mutating node have completed execution.

18. The non-transitory computer readable storage media of claim 14 , wherein

determining whether to execute the operations represented by the processor node comprises determining, according to a set of processor node rules, whether to execute the operations represented by the processor node; and

executing the operations represented by the first subgraph further comprises, for each processor node:

in response to determining to execute the operations represented by the processor node:

generating output data by executing the operations represented by the processor node, and

sending the output data to each child node of the processor node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2020
From: ALSHARIF, OUAIS; WILKES, IAN MICHAEL
To: WAYMO LLC
Reel/Frame 051697/0233 →
Continuity (1)
Related Publication 20210190508A1 · Jun 24, 2021