Scheduling system method and apparatus for a cluster
First Claim
1. A method of optimizing a task-scheduling system comprising decomposing one or more parallel programs into its component tasks and dynamically redistributing the parallel programs tasks into any available idle nodes in such a way that the execution time of the parallel program is decreased.
2 Assignments
0 Petitions
Accused Products
Abstract
The invention provides for a method of optimizing a task-scheduling system where the method comprises decomposing one or more parallel programs into its component tasks and dynamically redistributing the parallel programs tasks into any available idle nodes in such a way that the execution time of the parallel program is decreased. The parallel programs, or jobs, may be represented as unitary two-dimensional blocks equating to the amount of time that the job will take to execute for a specified number of processors, or nodes, wherein the jobs are queued in, or dropped into, in an array whose width corresponds to the total number of available nodes in any single time interval. In one embodiment, the first phase of the technique may implement an algorithm to position each job in the array. The invention also provides extensions to take into account real-world behavior such as finite inter-processor communication time and context switching between jobs. Applications include finite element analysis, computationally intensive numerical calculations, modeling and statistical analysis of experimental data.
210 Citations
16 Claims
- 1. A method of optimizing a task-scheduling system comprising decomposing one or more parallel programs into its component tasks and dynamically redistributing the parallel programs tasks into any available idle nodes in such a way that the execution time of the parallel program is decreased.
- 2. A method of optimizing a task-scheduling system comprising representing one or more parallel programs, or jobs, as unitary two-dimensional blocks equating to the amount of time that the job will take to execute for a specified number of processors, or nodes, wherein the jobs are queued in an array whose width corresponds to the total number of available nodes in any single time interval, wherein each job is positioned in the array according to a block packing algorithm.
-
8. A method of creating and/or modifying a data flow graph in a parallel multicomputer system, comprising the steps of:
-
characterizing one or more jobs in terms of expected execution duration and computational power needs;
placing the jobs in a queue, the queue viewed as a two-dimensional array of nodes versus time, according to a bin-packing algorithm;
locating idle computation periods, or holes, between the jobs;
scanning each of the jobs in order to build a data flow graph which includes reference to the holes;
scanning the queue from earliest to the last, and attempting to move each task down in the queue by analyzing the position of each task in comparison to the position of the lowest holes in the data structure and if the hole is lower than the task, moving the task in the queue to fill the hole and thus updating the data flow graph; and
repeating the scanning process until the maximum number of available holes have been filled and a modified data flow graph has been created.
-
Specification