MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Constraint-based array dependence analysis (1995) [58 citations — 5 self]

Download:
Download as a PDF | Download as a PS
by William Pugh, David Wonnacott
In Proc. Third Workshop on Languages, Compilers and Run-Time Systems for Scalable Computers
http://www.haverford.edu/cmsc/davew/array-analysis/WhatHowWhy.ps.gz
Add To MetaCart

Abstract:

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 questions about array references, not just get better answers to the old question 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 constraints. 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 a subset 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 practicality 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 analysis, and identified characteristics that keep our algorithms free of exponential behavior in practice.

Citations

7709 Computers and Intractability: A Guide to the Theory of NP-Completeness – Garey, Johnson - 1979
639 Efficiently Computing Static Single Assignment Form and the Control Dependence Graph – Cytron, Ferrante, et al. - 1991
441 Optimizing Supercompilers for Supercomputers – Wolfe - 1989
352 The omega test: a fast and practical integer programming algorithm for dependence analysis – Pugh - 1991
213 The Perfect Club Benchmarks: Effective Performance Evaluation of Supercomputers – Berry, Chen, et al. - 1989
157 The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction Parallelization – Rauchwerger, Padua - 1995
156 Global value numbers and redundant computations – Rosen, Wegman, et al. - 1988
138 Parametric integer programming – Feautrier - 1988
114 Analysis of interprocedural side effects in a parallel programming environment – Callahan, Cocke, et al. - 1988
101 Loop Transformations for Restructuring Compilers: The Foundations – Banerjee - 1993
92 Array DataFlow Analysis and its Use in Array Privatization – Maydan, Amarasinghe, et al. - 1993
79 ªAn Evaluation of Exact Methods for Analysis of Value-Based Array Data Dependences,º – Pugh, Wonnacott - 1993
78 Dataflow Analysis of Scalar and Array References, Intl – Feautrier - 1991
74 Eliminating false data dependence using the omega test – Pugh, Wonnacott - 1992
72 Array Privatization for Parallel Execution of Loops – Li - 1992
71 The Omega Library Interface Guide – Kelly, Maslov, et al. - 1996
66 A practical decision procedure for arithmetic with function symbols – Shostak - 1979
62 Theorem proving in arithmetic without multiplication – Cooper - 1972
62 Interactive parallel programming using the ParaScope Editor – Kennedy, McKinley, et al. - 1991
59 Sh-uctured dataflow analysis for arrays and its use in an optimizing compiler – Gross, Steenkiste
53 Fuzzy array dataflow analysis – Collard, Barthou, et al. - 1995
49 Symbolic dependence analysis for high-performance parallelizing compilers – Haghighat, Polychronopoulos - 1991
48 The privatizing doall test: A run-time technique for doall loop identification and array privatization – Rauchwerger, Padua - 1994
48 ªAutomatic Array Privatization and Demand-Driven Symbolic Analysis,º – Tu - 1995
47 Polaris: A New-Generation Parallelizing Compiler for MPPs – Padua, Eigenmann, et al. - 1993
41 A 2 2 pn upper bound on the complexity of presburger arithmetic – Oppen - 1978
39 Array privatization for shared and distributed memory machines – Tu, Padua - 1992
38 Uniform techniques for loop optimization – Pugh - 1991
35 On the automatic parallelization of the perfect benchmarks – Hoeflinger, Padua - 1998
33 Accurate Analysis of Array References – Maydan - 1992
30 Incremental Dependence Analysis – Rosene - 1990
28 Lazy array data-flow dependence analysis – Maslov - 1994
26 Going beyond integer programming with the omega test to eliminate false data dependences – Pugh, Wonnacott - 1995
25 The importance of direct dependence for automatic parallelism – Brandes - 1988
23 De-linearization: an efficient way to break multi-loop dependence equations – Maslov - 1992
23 Static and Dynamic Evaluation of Data Dependence Analysis – Petersen, Padua - 1993
21 Symbolic Analysis Techniques for Effective Automatic Parallelization – Blume - 1995
20 Optimization within a Unified Transformation Framework – Kelly - 1996
18 Detecting equality of values in programs – Alpern, Wegman, et al. - 1988
18 Experiences using the ParaScope Editor: an interactive parallel programming tool – Hall, Harvey, et al. - 1993
15 Simplifying polynomial constraints over integers to make dependence analysis more precise – Maslov, Pugh - 1994
14 Experience with constraint-based array dependence analysis – Pugh, Wonnacott - 1994
13 Dependence Analysis of Arrays Subscripted by Index Arrays – McKinley - 1990
13 Obtaining dependence vectors for nested-loop computations – Ribas - 1990
7 Fourier's elimination: Which to choose – Imbert - 1993
7 Dynamic Dependence Analysis: A Novel Method for Data Dependence Evaluation – Petersen, Padua - 1992
6 Experience in the automatic parallelization of 4 Perfect benchmark programs – Eigenmann, Hoeflinger, et al. - 1991
5 Theory and practice of parallelism detection in sequential programs – Voevodin - 1992
4 Undeciability of presburger arithmetic with a single monadic predicate letter – Downey - 1972
3 Practical issues on the projection of polyhedral sets. Annals of mathematics and artificial intelligence – Huynh, Lassez, et al. - 1992