automatic alignment of array data and processes to reduce communication time on dmpps
This paper investigates the problem of aligning array data and processes in a distributed-memory implementation. We present complete algorithms for compile-time analysis, the necessary program restructuring, and subsequent code-generation, and discuss their complexity. We finally evaluate the practical usefulness by quantitative experiments. The technique presented analyzes complete programs, including branches, loops, and nested parallelism. Alignment is determined with respect to offset, stride, and general axis relations. Placement of both data and processes are computed in a unifying framework based on an extended preference graph and its analysis. Dynamic redistributions are derived. The experimental results are very encouraging. The optimization algorithms implemented in our Modula-2* compiler improved the execution times of the programs by an average over 40\% on a MasPar MP-1 with 16384 processors.
aligning arrays data process communication timing paper implementation completeness algorithm compilation analysis program general complexity evaluation practical use experience parallel placement preference graph dynamic experimentation optimality processor  framework  time analysis memorialized distributed code generation