Distributed Computation Partitioning for Dynamic Resource Allocation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing resource allocation methods in distributed computing systems are inefficient in managing dynamic resource availability, leading to stalled computations and resource failures, especially in environments where resources vary over time.
Innovation Solution
A method and system for dynamically allocating computational resources to program portions in a distributed computing system, allowing partial execution with less than requested resources and adapting to resource availability changes by partitioning and repartitioning program components while preserving execution order.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a centralized resource manager allocates computational resources to applications, then resource allocation is managed centrally, but computation may stall when requested resources are not immediately available
Solution Approach 1:
The patent segments the computation into multiple independent program portions that can execute separately. When resources are partially available, the system divides the computation graph into sub-graphs that can be executed independently, allowing computation to proceed without waiting for full resource availability. This resolves the contradiction by enabling continuous computation execution while resources are being allocated incrementally.
Solution Approach 2:
The patent implements partial execution by allowing program portions to run with less than the requested computational resources. The system executes available computation tasks with currently allocated resources, then adds more resources as they become available. This approach eliminates computation stalls by accepting partial action now rather than waiting for complete resource allocation.
2Productivity
If computational resources are dynamically allocated to program portions, then resource utilization efficiency improves, but system complexity increases due to partitioning and repartitioning operations
Solution Approach 1:
The patent implements feedback mechanisms where the resource manager continuously monitors resource availability and computation progress. Based on this feedback, the system dynamically repartitions computation graphs and reallocates resources. The feedback loop includes tracking which program portions have executed, which are pending, and current resource availability, enabling automated decision-making that manages complexity while maintaining high resource utilization.
Solution Approach 2:
The patent makes the computation graph structure dynamic by allowing continuous partitioning and repartitioning operations. The system can transform a monolithic computation graph into multiple sub-graphs, execute them in parallel or sequence, and recombine results. This dynamic restructuring enables flexible resource allocation that adapts to changing conditions, improving productivity despite increased operational complexity.
3Speed
If the computation graph is partitioned into sub-graphs for parallel execution, then computation speed increases, but maintaining execution order becomes more difficult
Solution Approach 1:
The patent resolves the execution order problem by introducing a temporal dimension to the partitioning strategy. Instead of simply dividing the computation graph spatially, the system partitions based on execution phases and data dependencies. Sub-graphs are assigned execution timestamps and dependency markers that ensure correct ordering is maintained across parallel executions. This dimensional approach to partitioning enables both speed improvement through parallelism and stability through ordered execution.
Data Source
Figure 1
Figure 2a
Figure 2b
AI summary
A method for performing a distributed computation on a computing system using computational resources dynamically allocated using a computational resource manager includes storing information specifying quantities of computational resources associated with respective ones of a number of program portions of the program, where the program portions perform successive transformations of data and each program portion uses computational resources granted by the computational resource manager enabling computation associated with that program portion to be performed in the computing system, requesting a first quantity of computational resources associated with a first program portion of the number of program portions from the computational resource manager, receiving a second quantity of computational resources from the computational resource manager, less than the requested first quantity of computational resources, performing computation associated with the first portion of the program using the second quantity of computational resources, while performing the computation associated with the first portion of the program using the second quantity of computational resources, receiving an additional quantity of computational resources from the computational resource manager, and performing an additional computation associated with the first portion of the program using the additional quantity of computational resources while performing the computation associated with the first portion using the second quantity of computational resources.