摘要 |
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. <IMAGE>
|