Abstract
Standard array data dependence testing algorithms give information about the aliasing of array references. If statement 1 writes a[5], and statement 2 later reads a [5], standard techniques described this as a flow dependence, even if there was an intervening write. We call a dependence between two references to the same memory location a memory-based dependence. In contrast, if there are no intervening writes, the references touch the same value and we call the dependence a value-based dependence.
There has been a surge of recent work on value-based array data dependence analysis (also referred to as computation of array data-flow dependence information). In this paper, we describe a technique that is exact over programs without control flow (other than loops) and non-linear references. We compare our proposal with the technique proposed by Paul Feautrier, which is the other technique that is complete over the same domain as ours. We also compare our work with that of Tu and Padua, a representative approximate scheme for array privatization.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Corinne Ancourt and François Irigoin. Scanning polyhedra with do loops. In Proc. of the Third ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 39–50, April 1991.
Saman P. Amarasinghe and Monica S. Lam. Communication optimization and code generation for distributed memory machines. In ACM '93 Conf. on Programming Language Design and Implementation, June 1993.
Thomas Brandes. The importance of direct dependences for automatic parallelism. In Proc of 1988 International Conference on Supercomputing, pages 407–417, July 1988.
D. Callahan and K. Kennedy. Analysis of interprocedural side effects in a parallel programming environment. Journal of Parallel and Distributed Computing, 5:517–550, 1988.
Evelyn Duesterwald, Rajiv Gupta, and Mary Lou Soffa. A practical data flow framework for array reference analysis and its use in optimizations. In ACM '93 Conf. on Programming Language Design and Implementation, June 1993.
P. Feautrier. Parametric integer programming. Operationnelle/Operations Research, 22(3):243–268, September 1988.
Paul Feautrier. Array expansion. In ACM Int. Conf. on Supercomputing, St Malo, pages 429–441, 1988.
Paul Feautrier. Dataflow analysis of array and scalar references. International Journal of Parallel Programming, 20(1), February 1991.
Thomas Gross and Peter Steenkiste. Structured dataflow analysis for arrays and its use in an optimizing compiler. Software — Practice and Experience, 20:133–155, February 1990.
Zhiyuan Li. Array privatization for parallel execution of loops. In Proc. of the 1992 International Conference on Supercomputing, pages 313–322, July 1992.
Dror E. Maydan, Saman P. Amarasinghe, and Monica S. Lam. Data dependence and data-flow analysis of arrays. In 5th Workshop on Languages and Compilers for Parallel Computing (Yale University tech. report YALEU/DCS/RR-915), pages 283–292, August 1992.
Dror E. Maydan, Saman P. Amarasinghe, and Monica S. Lam. Array dataflow analysis and its use in array privatization. In ACM '93 Conf. on Principles of Programming Languages, January 1993.
Vadim Maslov. Lazy array data-flow dependence analysis. In ACM Conference on Principles of Programming Languages, January 1994.
Dror Eliezer Maydan. Accurate Analysis of Array References. PhD thesis, Computer Systems Laboratory, Stanford U., September 1992.
D. E. Maydan, J. L. Hennessy, and M. S. Lam. Efficient and exact data dependence analysis. In ACM SIGPLAN'91 Conference on Programming Language Design and Implementation, pages 1–14, June 1991.
D. Oppen. A \(2^{2^{2^{pn} } }\) upper bound on the complexity of presburger arithmetic. Journal of Computer and System Sciences, 16(3):323–332, July 1978.
David A. Padua, Rudolf Eigenmann, Jay Hoeflinger, Paul Petersen, Peng Tu, Stephen Weatherford, and Keith Faigin. Polaris: A new-generation parallelizing compiler for mpps. CSRD Rpt. 1306, Dept. of Computer Science, University of Illinois at Urb ana-Champaign, June 1993.
William Pugh. Uniform techniques for loop optimization. In 1991 International Conference on Supercomputing, pages 341–352, Cologne, Germany, June 1991.
William Pugh. The Omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM, 8:102–114, August 1992.
William Pugh. Definitions of dependence distance. Letters on Programming Languages and Systems, September 1993.
William Pugh and David Wonnacott. Going beyond integer programming with the Omega test to eliminate false data dependences. Technical Report CS-TR-2993, Dept. of Computer Science, University of Maryland, College Park, December 1992. An earlier version of this paper appeared at the SIGPLAN PLDI'92 conference.
William Pugh and David Wonnacott. Static analysis of upper and lower bounds on dependences and parallelism. Technical Report CS-TR-2994.2, Dept. of Computer Science, University of Maryland, College Park, June 1993.
Hudson Ribas. Obtaining dependence vectors for nested-loop computations. In Proc of 1990 International Conference on Parallel Processing, pages II-212–II-219, August 1990.
Carl Rosene. Incremental Dependence Analysis. PhD thesis, Dept. of Computer Science, Rice University, March 1990.
Gilbert Strang. Linear Algebra and its Applications. Harcourt Brace Jovanovich, Publishers, 1988.
Peng Tu and David Padua. Array privatization for shared and distributed memory machines. In Proc. 2nd Workshop on Languages, Compilers, and Run-Time Environments for Distributed Memory Machines, September 1992. appeared in ACM SIGPLAN Notices January 1993.
Michael Wolfe. The tiny loop restructuring research tool. In Proc of 1991 International Conference on Parallel Processing, pages II-46–II-53, 1991.
Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, 1991.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Pugh, W., Wonnacott, D. (1994). An exact method for analysis of value-based array data dependences. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1993. Lecture Notes in Computer Science, vol 768. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57659-2_31
Download citation
DOI: https://doi.org/10.1007/3-540-57659-2_31
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57659-4
Online ISBN: 978-3-540-48308-3
eBook Packages: Springer Book Archive