Skip to main content
Log in

Dataflow analysis of array and scalar references

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

Given a program written in a simple imperative language (assignment statements,for loops, affine indices and loop limits), this paper presents an algorithm for analyzing the patterns along which values flow as the execution proceeds. For each array or scalar reference, the result is the name and iteration vector of the source statement as a function of the iteration vector of the referencing statement. The paper discusses several applications of the method: conversion of a program to a set of recurrence equations, array and scalar expansion, program verification and parallel program construction.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Paul Feautrier, Parametric integer programming,RAIRO Recherche Opérationnlle,22:243–268 (September 1988).

    Google Scholar 

  2. N. Suzuki and D. Jefferson, Verification decidability of Pressburger array programs.Procs. of a Conf. on TCS, Waterloo (1977).

  3. David J. Kuck,The Structure of Computers and Computations, J. Wiley and Sons, New York (1978).

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  6. Thomas Brandes, The importance of direct dependences for automatic parallelization,ACM Int'l. Conf. on Supercomputing, St. Malo, France (July 1988).

  7. Michael J. Wolfe and Utpal Banerjee, Data dependence and its application to parallci processing,IJPP 16:137–178 (1987).

    Google Scholar 

  8. Nadia Tawbi, Alain Dumay, and Paul Feautrier, PAF: un paralléliseur automatique pour FORTRAN, Technical Report 185,MASI (1987).

  9. L. G. Tesler and H. J. Enea, A language design design for concurrent processes,SJCC, pp. 403–408 (1968).

  10. J. C. Syre, D. Comte, and N. Hifdi, Pipelining, parallelism and asynchronism in the LAU system,Int'l. Conf. on Parallel Processing (1977).

  11. Jacques Arsac,La construction de programmes structurés, Dunod, Paris (1977).

    Google Scholar 

  12. E. A. Ashcroft and W. W. Wadge,Lucid, the Data-flow Programming Language, Academic Press (1985).

  13. J. R. Allen and Ken Kennedy, Automatic loop interchange,Proc. of the ACM SIGPLAN Compiler Conference, pp. 233–246 (June 1984).

  14. Patrice Quinton, Mapping recurrences on parallel architectures,3rd Intl. Conf. on Supercomputing, Boston (May 1988).

  15. Paul Feautrier, Asymptotically efficient algorithms for parallel architectures, (ed.), M. Cosnard and C. Girault,Decentralized Systems, pp. 273–284;IFIP WG Vol. 10, No. 3, North-Holland (December 1989).

  16. William Pugh, Uniform techniques for loop optimization,ACM Conf. on Supercomputing, pp. 341–352 (January 1991).

  17. Lee-Chung, Lu, A unified framework for systematic loop transformations,SIGPLAN Notices,26:28–38 (July 1991);3rd ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming.

    Google Scholar 

  18. A. V. Aho, R. Sethi, and J. D. Ullman,Compilers: Principles, Techniques and Tools, Addison-Wesley, Reading, Massachusetts (1986).

    Google Scholar 

  19. Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck, An efficient method of computing static single assignment form,Proc. 16th ACM POPL Conf., pp. 25–35 (January 1989).

  20. Micah Beck, Richard Johnson, and Keshav Pingali, From control flow to dataflow,J. of Parallel and Distributed Computing,12:118–129 (1991).

    Google Scholar 

  21. Leslie Lamport, The parallel execution of DO loops,CACM,17:83–93 (February 1974).

    Google Scholar 

  22. François Irigoin and Rémi Triolet, Supernode partitioning, San Diego, California,Proc. 15th POPL, pp. 319–328 (January 1988).

  23. Zhiyu Shen, Zhiyuan Li, and Pen-Chung Yew, An empirical study on array subscripts and data dependencies,Int'l. Conf. on Parallel Processing, Vol.11, pp. 145–152 (1989).

    Google Scholar 

  24. Brenda S. Baker, An algorithm for structuring programs,J. of the ACM,24:98–120 (1977).

    Google Scholar 

  25. Zahira Ammarguellat, Restructuration des programmes FORTRAN en vue de leur parallélisation, Ph.D. thesis, Université P. et M. Curie, Paris (December 1988).

    Google Scholar 

  26. Zahira Ammarguellat, Normalization of Program Control Flow, Technical Report 885,CSRD (May 1989).

  27. Pierre Jouvelot and Babak Dehbonei, A unified semantic approach for the vectorization and parallelization of generalized reductions ACM Press,Procs. of the 3rd Int'l. Conf. on Supercomputing, pp. 186 194 (1989).

  28. Paul Feautrier, Array expansion,ACM Int'l. Conf. on Supercomputing, St. Malo (1988).

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Feautrier, P. Dataflow analysis of array and scalar references. Int J Parallel Prog 20, 23–53 (1991). https://doi.org/10.1007/BF01407931

Download citation

  • Received:

  • Revised:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01407931

Key Words

Navigation