Index Array Flattening Through Program Transformation

This paper presents techniques for compiling loops with complex, indirect array accesses into loops whose array references have at most one level of indirection. The transformation allows prefetching of array indices for more efficient structuring of communication on distributed-memory machines. It can also improve performance on other architectures by enabling prefetching of data between levels of the memory hierarchy or exploitation of hardware support for vectorized gather/scatter. Our techniques are implemented in a compiler for Fortran D and execution speed improvements are given for multiprocessor and vector machines.

[1]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[2]  Charles Koelbel,et al.  Compiling Global Name-Space Parallel Loops for Distributed Execution , 1991, IEEE Trans. Parallel Distributed Syst..

[3]  M. Karplus,et al.  CHARMM: A program for macromolecular energy, minimization, and dynamics calculations , 1983 .

[4]  Joel H. Saltz,et al.  Applying the CHAOS/PARTI library to irregular problems in computational chemistry and computational aerodynamics , 1993, Proceedings of Scalable Parallel Libraries Conference.

[5]  Ken Kennedy,et al.  Compiling Fortran D for MIMD distributed-memory machines , 1992, CACM.

[6]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[7]  Ken Kennedy,et al.  Evaluation of compiler optimizations for Fortran D on MIMD distributed memory machines , 1992, ICS '92.

[8]  Ken Kennedy,et al.  Compiler optimizations for Fortran D on MIMD distributed-memory machines , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[9]  Joel H. Saltz,et al.  Parti Procedures for Realistic Loops , 1991, The Sixth Distributed Memory Computing Conference, 1991. Proceedings.

[10]  Rice UniversityCORPORATE,et al.  High performance Fortran language specification , 1993 .

[11]  Barbara M. Chapman,et al.  Programming in Vienna Fortran , 1992, Sci. Program..

[12]  Ken Kennedy,et al.  Compiler Analysis for Irregular Problems in Fortran D , 1992, LCPC.

[13]  Joel H. Saltz,et al.  ICASE Report No . 92-12 / iVG / / ff 3 J / ICASE THE DESIGN AND IMPLEMENTATION OF A PARALLEL UNSTRUCTURED EULER SOLVER USING SOFTWARE PRIMITIVES , 2022 .

[14]  Ken Kennedy,et al.  Fortran D Language Specification , 1990 .

[15]  Dimitri J. Mavriplis,et al.  The design and implementation of a parallel unstructured Euler solver using software primitives , 1992 .

[16]  Paul Havlak,et al.  Interprocedural symbolic analysis , 1995 .

[17]  von Hanxledenreinhard D Newsletter #9 Handling Irregular Problems with Fortran D | a Preliminary Report Handling Irregular Problems with Fortran D | a Preliminary Report , 1993 .

[18]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[19]  Peter Brezany,et al.  Vienna Fortran - A Language Specification. Version 1.1 , 1992 .

[20]  Anne Rogers,et al.  Compiling for Distributed Memory Architectures , 1994, IEEE Trans. Parallel Distributed Syst..

[21]  G. A. Venkatesh,et al.  The semantic approach to program slicing , 1991, PLDI '91.

[22]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[23]  Joel H. Saltz,et al.  Parallelizing Molecular Dynamics Codes using the Parti Software Primitives , 1993, PPSC.

[24]  Joel H. Saltz,et al.  Principles of runtime support for parallel processors , 1988, ICS '88.