Nonlinear and Symbolic Data Dependence Testing

One of the most crucial qualities of an optimizing compiler is its ability to detect when different data references access the same storage location. Such references are said to be data-dependent and they impose constraints on the amount of program modifications the compiler can apply for improving the program's performance. For parallelizing compilers, the most important program constructs to investigate are loops and the array references they contain. In previous work, we have found a serious limitation of current data dependence tests to be that they cannot handle loop bounds or array subscripts that are symbolic, nonlinear expressions. In this paper, we describe a dependence test, called the range test, that can handle such expressions. Briefly, the range test proves independence by determining whether certain symbolic inequalities hold for a permutation of the loop nest. Powerful symbolic analyses and constraint propagation techniques were developed to prove such inequalities. The range test has been implemented in Polaris, a parallelizing compiler developed at the University of Illinois. We present measurements of the range test's performance and compare it with state-of-the-art tests.

[1]  Yunheung Paek,et al.  Simplification of array access patterns for compiler optimizations , 1998, PLDI.

[2]  Yunheung Paek,et al.  Parallel Programming with Polaris , 1996, Computer.

[3]  Rudolf Eigenmann,et al.  Demand-Driven, Symbolic Range Propagation , 1995, LCPC.

[4]  Rudolf Eigenmann,et al.  Symbolic range propagation , 1995, Proceedings of 9th International Parallel Processing Symposium.

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

[6]  Rudolf Eigenmann,et al.  The range test: a dependence test for symbolic, non-linear expressions , 1994, Proceedings of Supercomputing '94.

[7]  Lawrence Rauchwerger,et al.  Automatic Detection of Parallelism: A grand challenge for high performance computing , 1994, IEEE Parallel & Distributed Technology: Systems & Applications.

[8]  Rudolf Eigenmann,et al.  An Overview of Symbolic Analysis Techniques Needed for the Effective Parallelization of the Perfect Benchmarks , 1994, 1994 Internatonal Conference on Parallel Processing Vol. 2.

[9]  Lawrence Rauchwerger,et al.  Polaris: Improving the Effectiveness of Parallelizing Compilers , 1994, LCPC.

[10]  Constantine D. Polychronopoulos,et al.  Symbolic Analysis: A Basis for Parallelization, Optimization, and Scheduling of Programs , 1993, LCPC.

[11]  François Bourdoncle,et al.  Abstract debugging of higher-order imperative languages , 1993, PLDI '93.

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

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

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

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

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

[17]  Ken Kennedy,et al.  Practical dependence testing , 1991, PLDI '91.

[18]  Monica S. Lam,et al.  Efficient and exact data dependence analysis , 1991, PLDI '91.

[19]  Alexandru Nicolau,et al.  Advances in languages and compilers for parallel processing , 1991 .

[20]  Utpal Banerjee,et al.  A theory of loop permutations , 1990 .

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

[22]  H. P. Williams Fourier's Method of Linear Programming and its Dual , 1986 .

[23]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[24]  William H. Harrison,et al.  Compiler Analysis of the Value Ranges for Variables , 1977, IEEE Transactions on Software Engineering.

[25]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[26]  Lawrence Rauchwerger,et al.  Polaris: The Next Generation in Parallelizing Compilers , 2000 .

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

[28]  Rudolf Eigenmann,et al.  Polaris: Improving the E ectiveness of Parallelizing Compilers , 1994 .

[29]  Rudolf Eigenmann,et al.  Automatic program parallelization , 1993, Proc. IEEE.

[30]  M. Wolfe Triangular Banerjees Inequalities with directions , 1992 .

[31]  Jay Hoeeinger Run-time Dependence Testing by Integer Sequence Analysis , 1992 .

[32]  Utpal Banerjee,et al.  Dependence analysis for supercomputing , 1988, The Kluwer international series in engineering and computer science.

[33]  R. Duffin On fourier’s analysis of linear inequality systems , 1974 .