International Journal of Parallel Programming

, Volume 24, Issue 6, pp 513–546 | Cite as

Interprocedural Array Region Analyses



Many program optimizations require exact knowledge of the sets of array elements that are referenced in or that flow between statements or procedures. Some examples are array privatization, generation of communications in distributed memory machines, or compile-time optimization of cache behavior in hierarchical memory machines. Exact array region analysis is introduced in this article. These regions exactly represent the effects of statements and procedures upon array variables. To represent the flow of these data, we also introduce two new types of array region analyses: in and out regions. The intraprocedural propagation is presented, as well as a general linear framework for interprocedural analyses, which handles array reshapes. The intra- and inter-procedural propagation of array regions is implemented in pips, the interprocedural parallelizer of fortran programs developed at École des mines de Paris.

Key Words

Interprocedural analysis array data flow analysis array regions array reshaping 


  1. 1.
    W. Blume and R. Eigenmann, Performance Analysis of Parallelizing Compilers on the Perfect Benchmarks Programs. IEEE Trans. on Parallel and Distrib. Syst., 3(6):643–656 (November 1992).CrossRefGoogle Scholar
  2. 2.
    Zhiyuan Li, Array Privatization for Parallel Execution of Loops. Int’l. Conf. on Supercomputing, pp. 313–322 (July 1992).Google Scholar
  3. 3.
    Peng Tu and David Padua, Automatic Array Privatization. Languages and Compilers for Parallel Computing (August 1993).Google Scholar
  4. 4.
    Thomas Brandes, The Importance of Direct Dependences for Automatic Parallelization. In Int’l. Conf. on Supercomputing, pp. 407–417 (July 1988).Google Scholar
  5. 5.
    Paul Feautrier, Dataflow Analysis of Array and Scalar References. IJPP, 20(1):23–53 (September 1991).MATHGoogle Scholar
  6. 6.
    Vadim Maslov, Lazy Array Data-Flow Analysis. Symp. on Principles of Programming Languages, pp. 311–325 (January 1994).Google Scholar
  7. 7.
    Jean-François Collard, Automatic Parallelization of While-Loops Using Speculative Execution. IJPP, 23(2): 191–219 (1995).Google Scholar
  8. 8.
    Arnauld Leservot, Analyses Interprocédurales du Flot des Données. Ph.D. Thesis, Université Paris VI (March 1996).Google Scholar
  9. 9.
    Rémi Triolet, Paul Feautrier, and François Irigoin, Direct Parallelization of Call Statements. ACM SIGPLAN Symp. on Compiler Construction, pp. 176–185 (1986).Google Scholar
  10. 10.
    D. Callahan and K. Kennedy, Analysis of Interprocedural Side Effects in a Parallel Programming Environment. J. of Parallel and Distrib. Comput., 5:517–550 (1988).CrossRefGoogle Scholar
  11. 11.
    François Irigoin, Pierre Jouvelot, and Rémi Triolet, Semantical Interprocedural Parallelization: An Overview of the PIPS Project. Int’l. Conf. on Supercomputing, pp. 144–151 (June 1991).Google Scholar
  12. 12.
    Béatrice Apvrille-Creusillet, Régions Exactes et Privatisation de Tableaux (Exact Array Region Analyses and Array Privatization). Master’s Thesis, Université Paris VI, France (September 1994). Available via∼creusil.Google Scholar
  13. 13.
    Fabien Coelho, Compilation of I/O Communications for HPF. Frontiers ’95, pp. 102–109 (February 1995). Available via∼coelho.
  14. 14.
    Fabien Coelho and Corinne Ancourt, Optimal Compilation of HPF Remappings. Technical Report A-277-CRI, CRI, École des Mines de Paris (October 1995). (to appear in JPDC).MATHGoogle Scholar
  15. 15.
    Chung-Chi Jim Li, Elliot M. Stewart, and W. Kent Fuchs, Compiler-Assisted Full Checkpointing. Software: Practice and Experience, 24(10):871–886 (October 1994).Google Scholar
  16. 16.
    Michael Paleczny, Ken Kennedy, and Charles Koelbel, Compiler Support for Out-of-Core Arrays on Parallel Machines. Frontiers ’95, pp. 110–118 (February 1995).Google Scholar
  17. 17.
    M. Berry, D. Chen, P. Koss, D. Kuck, V. Lo, Y. Pang, R. Roloff, A. Sameh, E. Clementi, S. Chin, D. Schneider, G. Fox, P. Messina, D. Walker, C. Hsiung, J. Schwarzmeier, K. Lue, S. Orzag, F. Seidl, O. Johnson, G. Swanson, R. Goodrum, and J. Martin, The PERFECT Club Benchmarks: Effective Performance Evaluation of Supercomputers. Technical Report CSRD-827, CSRD, University of Illinois, (May 1989).Google Scholar
  18. 18.
    American National Standard Institute, Programming Language FORTRAN, ANSI X3.9-1978, ISO 1539–1980 (1983).Google Scholar
  19. 19.
    François Irigoin, Interprocedural Analyses for Programming Environments. Workshop on Environments and Tools for Parallel Scientific Computing, pp. 333–350 (September 1992).Google Scholar
  20. 20.
    Béatrice Creusillet, IN and OUT array Region Analyses. Fifth Int’l. Workshop on Compilers for Parallel Computers, pp. 233–246 (June 1995).Google Scholar
  21. 21.
    Béatrice Creusillet and François Irigoin, Interprocedural Array Regions Analyses. Languages and Compilers for Parallel Computing, No. 1033 in LNCS, pp. 46–60 (August 1995).Google Scholar
  22. 22.
    Corinne Ancourt and François Irigoin, Scanning Polyhedra with DO Loops. Symp. on Principles and Practice of Parallel Programming, pp. 39–50 (April 1991).Google Scholar
  23. 23.
    William Pugh, A Practical Algorithm for Exact Array Dependence Analysis. Comm. ACM, 35(8):102–114 (August 1992).CrossRefGoogle Scholar
  24. 24.
    William Pugh and David Wonnacott, Eliminating False Data Dependences Using the Omega Test. In Int’l. Conf. on PLDI, pp. 140–151 (June 1992).Google Scholar
  25. 25.
    Peiyi Tang, Exact Side Effects for Interprocedural Dependence Analysis. Int’l. Conf. on Supercomputing, pp. 137–146 (July 1993).Google Scholar
  26. 26.
    Mary Hall, Brian Murphy, Saman Amarasinghe, Shih-Wei Liao, and Monica Lam, Interprocedural Analysis for Parallelization. Languages and Compilers for Parallel Computing, No. 1033 in LNCS, pp. 61–80 (August 1995).Google Scholar
  27. 27.
    Trung Nguyen, Jungie Gu, and Zhiyuan Li, An Interprocedural Parallelizing Compiler and Its Support for Memory Hierarchy Research. Languages and Compilers for Parallel Computing, No. 1033 in LNCS, pp. 96–110 (August 1995).Google Scholar
  28. 28.
    Jungie Gu, Zhiyuan Li, and Gyungho Lee, Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization. Supercomputing (December 1995).Google Scholar
  29. 29.
    Michael Burke and Ron Cytron, Interprocedural Dependence Analysis and Parallelization. ACM SIGPLAN Notices, 21(7): 162–175 (July 1986).CrossRefGoogle Scholar
  30. 30.
    Vadim Maslov and William Pugh, Simplifying Polynomial Constraints over Integers to Make Dependence Analysis More Precise. Technical Report CS-TR-3109.1, University of Maryland, College Park (February 1994).Google Scholar
  31. 31.
    Paul Havlak and Ken Kennedy, An Implementation of Interprocedural Bounded Regular Section Analysis. IEEE Trans. on Parallel and Distrib. Syst., 2(3):350–360 (July 1991).CrossRefGoogle Scholar
  32. 32.
    V. Balasundaram and K. Kennedy, A Technique for Summarizing Data Access and its Use in Parallelism Enhancing Transformations. Int’l. Conf. on PLDI, pp. 41–53 (June 1989).Google Scholar
  33. 33.
    Rémi Triolet, Contribution à la Parallélisation Automatique de Programmes Fortran Comportant des Appels de Procédures. Ph.D. Thesis, Paris VI University (1984).Google Scholar
  34. 34.
    Béatrice Creusillet, Array regions for Interprocedural Parallelization and Array Privatization. Report A-279, CRI, École des Mines de Paris (November 1995). Available at∼creusil.Google Scholar

Copyright information

© Plenum Publishing Corporation 1996

Authors and Affiliations

  1. 1.Centre de Recherche en InformatiqueÉcole des mines de ParisFontainebleau CedexFrance

Personalised recommendations