19. A system for modifying a source program having a plurality of barrier statements comprising: a set of data structures which identify dependence relations between statements in the source program, and enforcement associations between said barrier statements and said dependence relations; and a processor operating on said set of data structures to classify said dependence relations as being either of a first type, which are enforceable by point-to-point synchronization, or of a second type which are not enforceable by point-to-point synchronization, to determine a subset of said plurality of barrier statements which will enforce said dependence relations of said second type, and to replace at least one of said plurality of barrier statements, which is not in said subset, with a point-to-point synchronization routine; wherein the processor identifies dependence relations between statements in the source program by identifying a first subset of said dependence relations by transitively reducing said dependence relations, and wherein transitively reducing said dependence relations comprises computing H=(D(DoD)), wherein D is a set of dependence relations identified for said parallel program, “” denotes set subtraction, “o” denotes set composition and H is a resulting, transitively reduced set based on D.
20. The system of claim 19 the processor further identifies the dependence relations by removing intra-thread dependence relations from said first subset to create a second subset of said dependence relations.