Graph-Based Computation Service Processing with Concurrent Subgraph Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing graph-based computation systems face challenges in efficiently processing multiple concurrent service requests and data flows, as they often require sequential processing and lack effective methods for concurrent execution of subgraphs, leading to inefficiencies in handling diverse processing times and orders of responses.
Innovation Solution
The system processes service requests and data flows by identifying and executing applicable subgraphs concurrently, using a computation graph to manage inputs and outputs, and employing techniques like pipeline parallelism, component parallelism, and data parallelism to handle multiple requests and work elements simultaneously, allowing for flexible ordering of responses without requiring multi-threaded processes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If sequential processing is used in graph-based computation systems, then system complexity is reduced and ease of operation is improved, but productivity and processing speed deteriorate due to inability to handle multiple concurrent service requests efficiently
Solution Approach 1:
The computation graph is divided into multiple subgraphs that can be executed independently and concurrently. Each subgraph represents a distinct computational unit that can be processed in parallel by different threads, enabling simultaneous handling of multiple service requests while maintaining manageable complexity through modular organization
Solution Approach 2:
The system dynamically determines which subgraphs can be executed concurrently based on data dependencies and resource availability. The execution engine adapts the processing strategy in real-time, switching between sequential and parallel execution modes as needed, thereby improving productivity without requiring complex static configuration
2Productivity
If concurrent execution of subgraphs is implemented, then productivity and handling of diverse processing times is improved, but device complexity and scheduling difficulty worsen
Solution Approach 1:
The system performs preliminary analysis of the computation graph to identify independent subgraphs that can be executed concurrently before actual processing begins. Dependency relationships are pre-computed and stored, allowing the execution engine to quickly determine parallel execution opportunities without complex real-time scheduling decisions
Solution Approach 2:
An execution engine acts as an intermediary between the computation graph definition and the actual processing threads. This intermediary manages the complexity of concurrent execution by handling thread creation, coordination, and synchronization, while presenting a simplified interface to both the graph definition and the underlying processing operations
3Loss of time
If multiple service requests are processed sequentially, then system simplicity is maintained, but loss of time and efficiency increase due to inability to utilize available processing resources
Solution Approach 1:
The system maintains continuous useful action by keeping multiple processing threads active simultaneously, each working on different subgraphs or service requests. Rather than idle waiting between sequential operations, the system continuously processes multiple independent computational units in parallel, maximizing resource utilization and reducing total processing time
Data Source
AI summary
A service request is processed according to a computation graph associated with the service by receiving inputs for the computation graph from a service client, providing the inputs to the computation graph as records of a data flow, receiving output from the computation graph, and providing the output to the service client.Data flows are processed concurrently in a graph-based computation by potentially concurrent execution of different types of requests, potentially concurrent execution of similar request types, and/or potentially concurrent execution of work elements within a request.


