Heterogeneous earliest finish time
Heterogeneous earliest finish time is a heuristic algorithm to schedule a set of dependent tasks onto a network of heterogenous workers taking communication time into account.
For inputs HEFT takes a set of tasks, represented as a directed acyclic graph, a set of workers, the times to execute each task on each worker, and the times to communicate the results from each job to each of its children between each pair of workers. It descends from list scheduling algorithms.
Algorithm
HEFT executes in two phases.Prioritizing tasks
In the first phase each task is given a priority. The priority of each task is usually designated to be its "upward rank" which is defined recursively as followswhere represents the task, is an average computation cost of job i among all the processor, is the set of all jobs that immediately depend on task, and is the average communication cost of the variables transferred between jobs and between all pairs of workers. Note that the computation of depends on the computation of the rank of all its children. The upward rank is meant to represent the expected distance of any task from the end of the computation. For averaged quantities like different averages may provide different results.