Skip to main content

An exact method for analysis of value-based array data dependences

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1993)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 768))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. Thomas Brandes. The importance of direct dependences for automatic parallelism. In Proc of 1988 International Conference on Supercomputing, pages 407–417, July 1988.

    Google Scholar 

  4. 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.

    Article  Google Scholar 

  5. 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.

    Google Scholar 

  6. P. Feautrier. Parametric integer programming. Operationnelle/Operations Research, 22(3):243–268, September 1988.

    Google Scholar 

  7. Paul Feautrier. Array expansion. In ACM Int. Conf. on Supercomputing, St Malo, pages 429–441, 1988.

    Google Scholar 

  8. Paul Feautrier. Dataflow analysis of array and scalar references. International Journal of Parallel Programming, 20(1), February 1991.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. Zhiyuan Li. Array privatization for parallel execution of loops. In Proc. of the 1992 International Conference on Supercomputing, pages 313–322, July 1992.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. Vadim Maslov. Lazy array data-flow dependence analysis. In ACM Conference on Principles of Programming Languages, January 1994.

    Google Scholar 

  14. Dror Eliezer Maydan. Accurate Analysis of Array References. PhD thesis, Computer Systems Laboratory, Stanford U., September 1992.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Article  Google Scholar 

  17. 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.

    Google Scholar 

  18. William Pugh. Uniform techniques for loop optimization. In 1991 International Conference on Supercomputing, pages 341–352, Cologne, Germany, June 1991.

    Google Scholar 

  19. William Pugh. The Omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM, 8:102–114, August 1992.

    Article  Google Scholar 

  20. William Pugh. Definitions of dependence distance. Letters on Programming Languages and Systems, September 1993.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. Carl Rosene. Incremental Dependence Analysis. PhD thesis, Dept. of Computer Science, Rice University, March 1990.

    Google Scholar 

  25. Gilbert Strang. Linear Algebra and its Applications. Harcourt Brace Jovanovich, Publishers, 1988.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. Michael Wolfe. The tiny loop restructuring research tool. In Proc of 1991 International Conference on Parallel Processing, pages II-46–II-53, 1991.

    Google Scholar 

  28. Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints 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

Publish with us

Policies and ethics