US 12,379,966 B2
Graph execution engine
Ashish Saxena, London (GB); Juan Antonio Navarro Perez, London (GB); Pavel Shmakov, London (GB); Cyril Chimisov, London (GB); Vinsensius B. Vega S Naryanto, Zurich (CH); Matej Rizman, London (GB); and Matthew Pearce, London (GB)
Assigned to Google LLC, Mountain View, CA (US)
Filed by Google LLC, Mountain View, CA (US)
Filed on Dec. 13, 2021, as Appl. No. 17/644,079.
Prior Publication US 2023/0185622 A1, Jun. 15, 2023
Int. Cl. G06F 9/50 (2006.01); G06Q 40/06 (2012.01)
CPC G06F 9/5044 (2013.01) [G06Q 40/06 (2013.01); G06F 2209/501 (2013.01)] 22 Claims
OG exemplary drawing
 
1. A computer-implemented method when executed by data processing hardware causes the data processing hardware to perform operations comprising:
for each of multiple computing devices of a distributed computing system, obtaining resource characteristics;
obtaining a graph comprising a plurality of nodes, each node representing a computational job and connected to one or more other nodes via edges, each edge representing a dependency between two connected nodes, wherein a size of the graph is too large to fit within memory of any single computing device of the multiple computing devices;
slicing, based on the dependencies of connected nodes, the graph into a plurality of sub-graphs, each sub-graph comprising one or more nodes of the plurality of nodes, each sub-graph of the plurality of sub-graphs comprising a size that is less than a threshold size limit;
for each respective sub-graph of the plurality of sub-graphs:
determining a computational cost of the respective sub-graph;
distributing, based on the computational cost of the respective sub-graph and the resource characteristics obtained for each of the multiple computing devices of the distributed computing system, the respective sub-graph to a respective one of the computing devices; and
receiving a respective result from the respective one of the computing devices, the respective result based on execution of the computational jobs of the one or more nodes of the sub-graph by the respective one of the computing devices; and
determining a total result based on each respective result.