Graph Execution Engine for Resource-Aware Distributed Computing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for large-scale computations, such as those required by financial institutions to compute values of financial portfolios, are inefficient, labor-intensive, and fail to effectively utilize computing resources like CPUs and GPUs, often relying on less accurate methods like finite differences.
Innovation Solution
A graph execution engine that slices computational graphs into sub-graphs, determines resource costs, and distributes them to computing devices based on resource characteristics, enabling efficient execution and reuse of intermediate values across a distributed computing system.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If computations are manually divided into batches and distributed to compute farms, then the computations can be performed, but the process becomes labor-intensive and inefficient
Solution Approach 1:
The system automatically segments the computational graph into smaller sub-graphs that can be distributed across multiple computing devices. This eliminates manual batch division by introducing an automated graph slicing mechanism that partitions computations based on device capabilities and dependencies, resolving the contradiction between productivity improvement and operational complexity.
Solution Approach 2:
The graph execution engine implements self-service by automatically analyzing the computational graph, determining optimal distribution strategies, and allocating sub-graphs to appropriate computing devices without human intervention. This automation resolves the labor-intensive nature of manual batch distribution while maintaining high computation efficiency.
2Use of energy by moving object
If computing resources are distributed across multiple devices, then resource utilization improves, but resource allocation becomes complex
Solution Approach 1:
The system employs feedback mechanisms by continuously monitoring resource characteristics of computing devices and adjusting the distribution of sub-graphs accordingly. This feedback loop enables dynamic optimization of resource utilization while managing allocation complexity through automated decision-making based on real-time device status.
Solution Approach 2:
The graph execution engine changes parameters by evaluating different distribution scenarios and selecting optimal allocation strategies based on computed metrics. This parameter-based approach transforms the complex resource allocation problem into a systematic optimization process, improving resource utilization while managing complexity through quantitative analysis.
3Speed
If the computational graph is distributed across multiple devices, then computations can be parallelized, but coordinating execution becomes difficult
Solution Approach 1:
The system performs preliminary action by pre-analyzing the computational graph and establishing execution plans before distribution. Dependencies are identified and resolved in advance, and sub-graphs are prepared for execution with all necessary context. This preliminary preparation enables parallel execution across multiple devices while simplifying coordination during actual computation.
4Productivity
If intermediate computation results are reused, then duplicate work is eliminated, but tracking dependencies becomes more complex
Solution Approach 1:
The system implements copying by creating and storing intermediate computation results that can be reused across different parts of the computational graph. Instead of recalculating the same values, the engine copies and distributes pre-computed results to dependent sub-graphs, eliminating duplicate work while managing dependency tracking through systematic result registration and retrieval mechanisms.
Data Source
AI summary
A method includes obtaining a graph that includes a plurality of nodes each representing a computational job and connected to one or more other nodes via edges. Each edge represents a dependency between two connected nodes. For each computing device of a distributed computing system, the method includes obtaining resource characteristics. The method includes slicing, based on the dependencies of connected nodes, the graph into a plurality of sub-graphs each including one or more nodes. For each respective sub-graph, the method includes determining a computational cost of the respective sub-graph and distributing, based on the computational cost and the resource characteristics, the respective sub-graph to the respective one of the computing devices. The method includes receiving a respective result from the respective one of the computing devices based on execution of the computational jobs. The method includes determining a total result based on each respective result.


