Skip to main content

Array Dataflow Analysis

  • Chapter
  • First Online:

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

Summary

While mathematical reasoning is about fixed values, programs are written in term of memory cells, whose contents are changeable values. To reason about programs, the first step is always to abstract from the memory cells to the values they contains at a given point in the execution of the program. This step, which is known as Dataflow Analysis, may use different techniques according to the required accuracy and the type of programs to be analyzed.

This paper gives a review of the ad hoc techniques which have been designed for the analysis of Array Programs. An exact solution is possible for the tightly constrained static control programs. The method can be extended to more general programs, but the results are then approximation to the real dataflow. Extensions to complex statements and to the interprocedural case are also presented.

The results of Array Dataflow Analysis may be of use for program checking, program optimization and parallelization.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. R. Allen and Ken Kennedy. Automatic translation of fortran programs to vector form. ACM TOPLAS, 9(4):491–542, October 1987.

    Article  MATH  Google Scholar 

  2. A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, Mass, 1986.

    Google Scholar 

  3. Denis Barthou, Jean-François Collard, and Paul Feautrier. Fuzzy array dataflow analysis. Journal of Parallel and Distributed Computing, 40:210–226, 1997.

    Article  MATH  Google Scholar 

  4. Thomas Brandes. The importance of direct dependences for automatic parallelization. In ACM Int. Conf. on Supercomputing, St Malo, France, July 1988.

    Google Scholar 

  5. Patrick Cousot and Radhia Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Symp. on Principle and Practice of Programming Languages, pages 238–252. ACM, 1977.

    Google Scholar 

  6. Béatrice Creusillet and François Irigoin. Interprocedural array regions analyses. Int. J. of Parallel Programming, 24(6):513–546, 1996.

    Google Scholar 

  7. G. B. Dantzig. Linear Programming and Extensions. Princeton University Press, 1963.

    Google Scholar 

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

    Google Scholar 

  9. Paul Feautrier. Parametric integer programming. RAIRO Recherche Opérationnelle, 22:243–268, September 1988.

    MATH  MathSciNet  Google Scholar 

  10. Paul Feautrier. Asymptotically efficent algorithms for parallel architectures. In M. Cosnard and C. Girault, editors, Decentralized System, pages 273–284. IFIP WG 10.3, North-Holland, December 1989.

    Google Scholar 

  11. Paul Feautrier. Dataflow analysis of scalar and array references. Int. J. of Parallel Programming, 20(1):23–53, February 1991.

    Article  MATH  Google Scholar 

  12. Paul Feautrier. Some efficient solutions to the affine scheduling problem, I, one dimensional time. Int. J. of Parallel Programming, 21(5):313–348, October 1992.

    Article  MATH  MathSciNet  Google Scholar 

  13. Paul Feautrier. Some efficient solutions to the affine scheduling problem, II, multidimensional time. Int. J. of Parallel Programming, 21(6):389–420, December 1992.

    Article  MATH  MathSciNet  Google Scholar 

  14. Robert J. Floyd. Assigning meaning to programs. In Mathematical Aspects of Computer Science. AMS, 1967.

    Google Scholar 

  15. J. B. J. Fourier. Oeuvres de Fourier, Tome II. Gauthier-Villard, Paris, 1890.

    Google Scholar 

  16. M. Griebl and J.-F. Collard. Generation of synchronous code for automatic parallelization of while loops. In Euro-Par95, Stockholm, Sweden, Aug 1995.

    Google Scholar 

  17. Jungie Gu, Zhiyuan Li, and Gyungho Lee. Symbolic array dataflow analysis for array privatization and program parallelization. In Supercomputing, December 1995.

    Google Scholar 

  18. R. E. Gomory. An algorithm for integer solutions to linear programs. In R. L. Graves and P. Wolfe, editors, Recent Advances in Math. Programming, chapter 34, pages 269–302. Mac-Graw Hill, New York, 1963.

    Google Scholar 

  19. C. Heckler and L. Thiele. Computing linear data dependencies in nested loop programs. Parallel Processing Letters, 4(3):193–204, 1994.

    Article  Google Scholar 

  20. Pierre Jouvelot and Paul Feautrier. Parallélisation Sémantique. Informatique théorique et Applications, 24:131–159, 1990.

    MATH  Google Scholar 

  21. R. M. Karp, R. E. Miller, and S. Winograd. The organization of computations for uniform recurrence equations. Journal of the ACM, 14:563–590, 1967.

    Article  MATH  MathSciNet  Google Scholar 

  22. Induprakas Kodokula and Keshav Pingali. Transformations for imperfect nested loops. In Supercomputing, 1996.

    Google Scholar 

  23. David J. Kuck. The Structure of Computers and Computations. J. Wiley and sons, New York, 1978.

    Google Scholar 

  24. Arnauld Leservot. Analyse Interprocédurale du flot des données. PhD thesis, Université Paris VI, March 1996.

    Google Scholar 

  25. Vincent Lefebvre and Paul Feautrier. Storage management in parallel programs. In IEEE Computer Society, editor, 5th Euromicro Workshop on Parallel and Distributed Processing, pages 181–188, Londres (England), January 1997.

    Google Scholar 

  26. Hervé Leverge, Christophe Mauras, and Patrice Quinton. The ALPHA language and its use for the design of systolic arrays. Journal of VLSI Signal Processing, 3:173–182, 1991.

    Article  Google Scholar 

  27. Dror E. Maydan, Saman P. Amarasinghe, and Monica S. Lam. Array dataflow analysis and its use in array privatization. InProc. of ACM Conf. on Principles of Programming Languages, pages 2–15, January 1993.

    Google Scholar 

  28. Michel Minoux. Programmation Mathématique, théorie et algorithmes. Dunod, Paris, 1983.

    Google Scholar 

  29. William Pugh. The Omega test: A fast and practical integer programming algorithm for dependence analysis. In Supercomputing, 1991.

    Google Scholar 

  30. D. A. Padua and Michael J. Wolfe. Advanced compiler optimization for supercomputers. CACM, 29:1184–1201, December 1986.

    Google Scholar 

  31. William Pugh and David Wonnacott. An evaluation of exact methods for analysis of value-based array data dependences. In Sixth Annual Workshop on Programming Languages and Compilers for Parallel Computing, pages 546–566. Springer-Verlag LNCS 768, August 1993.

    Google Scholar 

  32. Xavier Redon and Paul Feautrier. Detection of reductions in sequential programs with loops. In Arndt Bode, Mike Reeve, and Gottfried Wolf, editors, Procs. of the 5th Int. Parallel Architectures and Languages Europe, pages 132–145. LNCS 694, June 1993.

    Google Scholar 

  33. A. Schrijver. Theory of linear and integer programming. Wiley, NewYork, 1986.

    MATH  Google Scholar 

  34. Rémi Triolet, François Irigoin, and Paul Feautrier. Automatic parallelization of FORTRAN programs in the presence of procedure calls. In Bernard Robinet and R. Wilhelm, editors, ESOP 1986, LNCS 213. Springer-Verlag, 1986.

    Google Scholar 

  35. Peng Tu and David Padua. Array privatization for shared and distributed memory machines. In Proc. of the 7th Workshop on Languages and Compilers for Parallel Computers, LNCS 892, 1994.

    Google Scholar 

  36. David G. Wonnacott. Constraint-Based Array Dependence Analysis. PhD thesis, U. of Maryland, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Feautrier, P. (2001). Array Dataflow Analysis. In: Pande, S., Agrawal, D.P. (eds) Compiler Optimizations for Scalable Parallel Systems. Lecture Notes in Computer Science, vol 1808. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45403-9_6

Download citation

  • DOI: https://doi.org/10.1007/3-540-45403-9_6

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-41945-7

  • Online ISBN: 978-3-540-45403-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics