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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
J. R. Allen and Ken Kennedy. Automatic translation of fortran programs to vector form. ACM TOPLAS, 9(4):491–542, October 1987.
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, Mass, 1986.
Denis Barthou, Jean-François Collard, and Paul Feautrier. Fuzzy array dataflow analysis. Journal of Parallel and Distributed Computing, 40:210–226, 1997.
Thomas Brandes. The importance of direct dependences for automatic parallelization. In ACM Int. Conf. on Supercomputing, St Malo, France, July 1988.
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.
Béatrice Creusillet and François Irigoin. Interprocedural array regions analyses. Int. J. of Parallel Programming, 24(6):513–546, 1996.
G. B. Dantzig. Linear Programming and Extensions. Princeton University Press, 1963.
Paul Feautrier. Array expansion. In ACM Int. Conf. on Supercomputing, pages 429–441, 1988.
Paul Feautrier. Parametric integer programming. RAIRO Recherche Opérationnelle, 22:243–268, September 1988.
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.
Paul Feautrier. Dataflow analysis of scalar and array references. Int. J. of Parallel Programming, 20(1):23–53, February 1991.
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.
Paul Feautrier. Some efficient solutions to the affine scheduling problem, II, multidimensional time. Int. J. of Parallel Programming, 21(6):389–420, December 1992.
Robert J. Floyd. Assigning meaning to programs. In Mathematical Aspects of Computer Science. AMS, 1967.
J. B. J. Fourier. Oeuvres de Fourier, Tome II. Gauthier-Villard, Paris, 1890.
M. Griebl and J.-F. Collard. Generation of synchronous code for automatic parallelization of while loops. In Euro-Par95, Stockholm, Sweden, Aug 1995.
Jungie Gu, Zhiyuan Li, and Gyungho Lee. Symbolic array dataflow analysis for array privatization and program parallelization. In Supercomputing, December 1995.
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.
C. Heckler and L. Thiele. Computing linear data dependencies in nested loop programs. Parallel Processing Letters, 4(3):193–204, 1994.
Pierre Jouvelot and Paul Feautrier. Parallélisation Sémantique. Informatique théorique et Applications, 24:131–159, 1990.
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.
Induprakas Kodokula and Keshav Pingali. Transformations for imperfect nested loops. In Supercomputing, 1996.
David J. Kuck. The Structure of Computers and Computations. J. Wiley and sons, New York, 1978.
Arnauld Leservot. Analyse Interprocédurale du flot des données. PhD thesis, Université Paris VI, March 1996.
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.
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.
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.
Michel Minoux. Programmation Mathématique, théorie et algorithmes. Dunod, Paris, 1983.
William Pugh. The Omega test: A fast and practical integer programming algorithm for dependence analysis. In Supercomputing, 1991.
D. A. Padua and Michael J. Wolfe. Advanced compiler optimization for supercomputers. CACM, 29:1184–1201, December 1986.
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.
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.
A. Schrijver. Theory of linear and integer programming. Wiley, NewYork, 1986.
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.
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.
David G. Wonnacott. Constraint-Based Array Dependence Analysis. PhD thesis, U. of Maryland, 1995.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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