“…Because communication patterns are predictable, the programmer or compiler can place a matching receive for each send in a program. Libraries supporting this model, such as p4 [9], PVM [19], and MPI [24], are designed for programmer use but are also used as compiler targets by data-parallel languages such as High Performance Fortran (HPF) [37], Fortran-D [38], Vienna Fortran [11], and pC ++ [30]. In less regular, loosely synchronous problems, a programmer or compiler may possess global knowledge of the successive phases executed by a program, but not of the the precise sequence of operations and communications performed in each phase on each processor.…”