**3.2 Task clustering**

We denote the *i*-th cluster in *V<sup>s</sup> cls* as *clss*(*i*). If *<sup>n</sup><sup>s</sup> <sup>k</sup>* is included in *clss*(*i*) by "the *s* + 1 th task merging", we formulate one task merging as *clss*+1(*i*) <sup>←</sup> *clss*(*i*) ∪ {*n<sup>s</sup> <sup>k</sup>*}. If any two tasks, i.e., *ns <sup>i</sup>* and *<sup>n</sup><sup>s</sup> j* , are included in the same cluster, they are assigned to the same processor. Then the communication between *n<sup>s</sup> <sup>i</sup>* and *<sup>n</sup><sup>s</sup> <sup>j</sup>* is localized, so that we define *<sup>c</sup>*(*e<sup>s</sup> i*,*j* ) becomes zero. Task clustering is a set of task merging steps, that is finished when certain criteria have been satisfied.

Throughout this chapter, we denote that *clss*(*i*) is "linear" if and only if *clss*(*i*) contains no independent task(A. Gerasoulis, 1993). Note that if one cluster is linear, at least one path among any two tasks in the cluster exists and task execution order is unique.
