Array statements are often used to express data-parallelism in scienti c languages such as Fortran 90 and High Performance Fortran. In compiling array statements for a distributed-memory machine, e cient generation of communication sets and local index sets is important. We show that for arrays distributed block-cyclically on multiple processors, the local memory access sequence and communication sets can be e ciently enumerated as closed forms using regular sections. First, closed form solutions are presented for arrays that are distributed using block or cyclic distributions. These closed forms are then used with a virtual processor approach to give an e cient solution for arrays with block-cyclic distributions. This approach is based on viewing a block-cyclic distribution as a block (or cyclic) distribution on a set of virtual processors, which are cyclically (or block-wise) mapped to physical processors. These views are referred to as virtual-block or virtual-cyclic views depending on whether a block or cyclic distribution of the array on the virtual processors is used. The virtual processor approach permits di erent schemes based on the combination of the virtual processor views chosen for the di erent arrays involved in an array statement. These virtualization schemes have di erent indexing overhead. We present a strategy for identifying the virtualization scheme which will have the best performance. Performance results on a Cray T3D system are presented for hand-compiled code for array assignments. These results show that using the virtual processor approach, e cient code can be generated for execution of array statements involving block-cyclically distributed arrays.
They also provided a virtual processor approach REF for addressing the problem of reference index-set identification for array statements with BLOCK-CYCLIC(c) distribution and formulated active processor sets as closed forms.
On Compiling Array Expressions for Efficient Execution on Distributed-Memory Machines
ICPP
Computer Science