Removal of redundant dependences in DOACROSS loops with constant dependences

Dependence constrain the parallel execution of an imperative program and are typically enforced by synchronization instructions. These synchronization instructions can represent a significant part of the overhead in the parallel execution of a parallel program. Some of the dependence in the program may be redundant because they are covered by some other dependence. ln this paper an efficient algorithm to remove the redundant dependence in simple loops with constant dependence is presented. In the case of simple loops the redundancy is uniform, and all the redundant dependence are determined by determining redundant dependence at a node. Redundancy is not necessarily uniform in a doubly nested loop, A sufficient condition for uniformity of redundancy in a doubly nested loop is developed.