the design and implementation of a parallel array operator for the arbitrary remapping of data
Gather and scatter are data redistribution functions of long-standing importance to high performance computing. In this paper, we present a highly-general array operator with powerful gather and scatter capabilities unmatched by other array languages. We discuss an efficient parallel implementation, introducing three new optimizations---schedule compression, dead array reuse, and direct communication---that reduce the costs associated with the operator's wide applicability. In our implementation of this operator in ZPL, we demonstrate performance comparable to the hand-coded Fortran + MPI versions of the NAS FT and CG benchmarks.
design implementation parallel arrays operability data gather scatter high performance computing performance paper capabilities array languages language efficiency compression reuse direct association applications zpl demonstrate version benchmark communication parallel programming scheduling general optimality