Constraint-based array dependence analysis

Traditional array dependence analysis, which detects potential memory aliasing of array references is a key analysis technique for automatic parallelization. Recent studies of benchmark codes indicate that limitations of analysis cause many compilers to overlook large amounts of potential parallelism, and that exploiting this parallelism requires algorithms to answer new question about array references, not just get better answers to the old questions of aliasing. We need to ask about the flow of values in arrays, to check the legality of array privatization, and about the conditions under which a dependence exists, to obtain information about conditional parallelism. In some cases, we must answer these questions about code containing nonlinear terms in loop bounds or subscripts. This article describes techniques for phrasing these questions in terms of systems of contstraints. Conditional dependence analysis can be performed with a constraint operation we call the "gist" operation. When subscripts and loop bounds are affine, questions about the flow of values in array variables can be phrased in terms of Presburger Arithmetic. When the constraints describing a dependence are not affine, we introduce uninterpreted function symbols to represent the nonaffine terms. Our constraint language also provides a rich language for communication with the dependence analyzer, by either the programmer or other phases of the compiler. This article also documents our investigations of the praticality of our approach. The worst-case complexity of Presburger Arithmetic indicates that it might be unsuitable for any practical application. However, we have found that analysis of benchmark programs does not cause the exponential growth in the number of constraints that could occur in the worst case. We have studied the constraints produced during our aanalysis, and identified characteristics that keep our algorithms free of exponential behavior in practice.

[1]  V. V. Voevodin Mathematical Foundation of Parallel Computing , 1992 .

[2]  Dror Eliezer Maydan Accurate analysis of array references , 1993 .

[3]  Lawrence Rauchwerger,et al.  The privatizing DOALL test: a run-time technique for DOALL loop identification and array privatization , 1994, ICS '94.

[4]  David A. Padua,et al.  Static and Dynamic Evaluation of Data Dependence Analysis Techniques , 1996, IEEE Trans. Parallel Distributed Syst..

[5]  William Pugh,et al.  Nonlinear array dependence analysis , 1994 .

[6]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[7]  Collard,et al.  Fuzzy Array Dataaow Analysis , 1995 .

[8]  William Pugh,et al.  Uniform techniques for loop optimization , 1991, ICS '91.

[9]  David A. Padua,et al.  Experience in the Automatic Parallelization of Four Perfect-Benchmark Programs , 1991, LCPC.

[10]  William Pugh,et al.  Going Beyond Integer Programming with the Omega Test to Eliminate False Data Dependences , 1995, IEEE Trans. Parallel Distributed Syst..

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

[12]  Ken Kennedy,et al.  Incremental dependence analysis , 1990 .

[13]  Zhiyuan Li Array privatization for parallel execution of loops , 1992, ICS.

[14]  William Pugh,et al.  A practical algorithm for exact array dependence analysis , 1992, CACM.

[15]  Denis Barthou,et al.  Fuzzy Array Data , 1997 .

[16]  Utpal Banerjee,et al.  Loop Transformations for Restructuring Compilers: The Foundations , 1993, Springer US.

[17]  I. S. Gradshtein,et al.  THE ELEMENTS OF MATHEMATICAL LOGIC , 1963 .

[18]  Monica S. Lam,et al.  Data Dependence and Data-Flow Analysis of Arrays , 1992, LCPC.

[19]  Barbara M. Chapman,et al.  Supercompilers for parallel and vector computers , 1990, ACM Press frontier series.

[20]  Robert E. Shostak,et al.  A Practical Decision Procedure for Arithmetic with Function Symbols , 1979, JACM.

[21]  David A. Padua,et al.  Static and dynamic evaluation of data dependence analysis , 1993, ICS '93.

[22]  Paul Feautrier,et al.  Fuzzy Array Dataflow Analysis , 1997, J. Parallel Distributed Comput..

[23]  Valentin V. Voevodin Mathematical Foundations of Parallel Computing , 1992, World Scientific Series in Computer Science.

[24]  William Pugh,et al.  The Omega Library interface guide , 1995 .

[25]  Paul Feautrier,et al.  Fuzzy array dataflow analysis , 1995, PPOPP '95.

[26]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[27]  Vadim Maslov,et al.  Lazy array data-flow dependence analysis , 1994, POPL '94.

[28]  David A. Padua,et al.  Array privatization for shared and distributed memory machines (extended abstract) , 1993, SIGP.

[29]  William Pugh,et al.  An Exact Method for Analysis of Value-based Array Data Dependences , 1993, LCPC.

[30]  Preston Briggs Automatic parallelization , 1996, SIGP.

[31]  Peng Tu,et al.  Automatic array privatization and demand-driven symbolic analysis , 1996 .

[32]  Jean-Louis Imbert Fourier's Elimination: Which to Choose? , 1993, PPCP.

[33]  Thomas R. Gross,et al.  Structured dataflow analysis for arrays and its use in an optimizing compiler , 1990, Softw. Pract. Exp..

[34]  William Pugh,et al.  Experiences with Constraint-based Array Dependence Analysis , 1994, PPCP.

[35]  Olgierd Wojtasiewicz,et al.  Elements of mathematical logic , 1964 .

[36]  Rudolf Eigenmann,et al.  Polaris: A New-Generation Parallelizing Compiler for MPPs , 1993 .

[37]  Constantine D. Polychronopoulos,et al.  Symbolic Program Analysis and Optimization for Parallelizing Compilers , 1992, LCPC.

[38]  Monica S. Lam,et al.  Array-data flow analysis and its use in array privatization , 1993, POPL '93.

[39]  PughWilliam,et al.  Constraint-based array dependence analysis , 1998 .

[40]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[41]  Geoffrey C. Fox,et al.  The Perfect Club Benchmarks: Effective Performance Evaluation of Supercomputers , 1989, Int. J. High Perform. Comput. Appl..

[42]  Lawrence Rauchwerger,et al.  The LRPD test: speculative run-time parallelization of loops with privatization and reduction parallelization , 1995, PLDI '95.

[43]  William Pugh,et al.  Simplifying Polynominal Constraints Over Integers to Make Dependence Analysis More Precise , 1994, CONPAR.

[44]  P. Feautrier Parametric integer programming , 1988 .

[45]  Ken Kennedy,et al.  Interactive Parallel Programming using the ParaScope Editor , 1991, IEEE Trans. Parallel Distributed Syst..

[46]  Derek C. Oppen,et al.  A 2^2^2^pn Upper Bound on the Complexity of Presburger Arithmetic , 1978, J. Comput. Syst. Sci..

[47]  Rudolf Eigenmann,et al.  Symbolic analysis techniques for effective automatic parallelization , 1995 .

[48]  David A. Padua,et al.  On the Automatic Parallelization of the Perfect Benchmarks , 1998, IEEE Trans. Parallel Distributed Syst..

[49]  Ken Kennedy,et al.  The parascope editor: an interactive parallel programming tool , 1993, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[50]  Hudson Benedito Ribas Obtaining Dependence Vectors for Nested-Loop Computations , 1990, ICPP.

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

[52]  William Pugh,et al.  Eliminating false data dependences using the Omega test , 1992, PLDI '92.

[53]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[54]  Thomas Brandes The importance of direct dependences for automatic parallelization , 1988, ICS '88.

[55]  David A. Padua,et al.  Dynamic Dependence Analysis: A Novel Method for Data Depndence Evaluation , 1992, LCPC.

[56]  William Pugh,et al.  Optimization within a unified transformation framework , 1996 .

[57]  Vadim Maslov,et al.  Delinearization: an efficient way to break multiloop dependence equations , 1992, PLDI '92.