This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Efficient Interprocedural Array Data-Flow Analysis for Automatic Program Parallelization
March 2000 (vol. 26 no. 3)
pp. 244-261

Abstract—Since sequential languages such as Fortran and C are more machine-independent than current parallel languages, it is highly desirable to develop powerful parallelization-tools which can generate parallel codes, automatically or semiautomatically, targeting different parallel architectures. Array data-flow analysis is known to be crucial to the success of automatic parallelization. Such an analysis should be performed interprocedurally and symbolically and it often needs to handle the predicates represented by IF conditions. Unfortunately, such a powerful program analysis can be extremely time-consuming if not carefully designed. How to enhance the efficiency of this analysis to a practical level remains an issue largely untouched to date. This paper presents techniques for efficient interprocedural array data-flow analysis and documents experimental results of its implementation in a research parallelizing compiler. Our techniques are based on guarded array regions and the resulting tool runs faster, by one or two orders of magnitude, than other similarly powerful tools.

[1] A.V. Aho, R. Sethi, and J.D. Ullman, Compilers, Principles, Techniques and Tools.New York: Addison-Wesley, 1985.
[2] V. Balasundaram, “A Mechanism for Keeping Useful Internal Information in Parallel Programming Tools: The Data Access Descriptor,” J. Parallel and Distributed Computing, vol. 9, pp. 154-170, 1990.
[3] M. Berry, D. Chen, P. Koss, D. Kuck, L. Pointer, S. 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. Orszag, F. Seidl, O. Johnson, G. Swanson, R. Goodrum, and J. Martin, “The Perfect Club Benchmarks: Effective Performance Evaluation of Supercomputers,” The Int'l J. Supercomputer Applications, vol. 3, no. 3, pp. 5-40, Fall 1989.
[4] W. Blume, R. Doallo, R. Eigenmann, J. Grout, J. Hoeflinger, T. Lawrence, J. Lee, D. Padua, Y. Paek, B. Pottenger, L. Rauchwerger, and P. Tu,“Parallel Programming with Polaris,” Computer, vol. 29, no. 12, pp. 78-82, Dec. 1996.
[5] W. Blume and R. Eigenmann, “Symbolic Analysis Techniques Needed for the Effective Parallelization of Perfect Benchmarks,” Technical report, dept. of Computer Science, Univ. of Illi nois, 1994.
[6] D. Callahan and K. Kennedy, “Analysis of Interprocedural Side Effects in a Parallel Programming Environment,” Proc. ACM SIGPLAN '86 Symp. Compiler Construction, pp. 162-175, June 1986.
[7] T.E. Cheatham Jr., G.H. Holloway, and J.A. Townley, “Symbolic Evaluation and the Analysis of Programs,” IEEE Trans. Software Eng., vol. 5, no. 4, pp. 402-417, July 1979
[8] J.-D. Choi, M. Burke, and P. Carini, “Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects,” Proc. 20th Ann. ACM Symp. Principles of Programming Languages, pp. 232-245, Jan. 1993.
[9] L.A. Clarke and D.J. Richardson, “Applications of Symbolic Evaluation,” J. Systems and Software, vol. 5, no. 1, pp. 15–35, 1985.
[10] B. Creusillet and F. Irigoin, “Interprocedural Array Region Analyses,” Int'l. J. Parallel Programming, vol. 24, no. 6, pp. 513-546, Dec. 1996.
[11] A. Deutsch, “Interprocedural May-Alias Analysis for Pointers: Beyond K-Limiting,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 230–241, June 1994.
[12] E. Dusterwald, R. Gupta, and M. Soffa, “A Practical Data-Flow Framework for Array Reference Analysis and Its Application in Optimization,” Proc. ACM Programming Language Design and Implementation (PLDI), pp. 68-77, 1993.
[13] R. Eigenmann, J. Hoeflinger, and D. Padua, “On the Automatic Parallelization of the Perfect Benchmarks,” Technical report TR 1392, Center for Supercomputing Research and Development, Univ. of Illinois, Urbana-Champaign, Nov. 1994.
[14] M. Emami, R. Ghiya, and L.J. Hendren, “Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers,” Proc. Conf. Programming Language Design and Implementation, pp. 242-257, 1994.
[15] R. Eigenmann, J. Hoeflinger, Z. Li, and D. Padua, “Experience in the Automatic Parallelization of Four Perfect-Benchmark Programs,” Proc. Fourth Workshop Languages and Compilers for Parallel Computing, Aug. 1991.
[16] R. Eigenmann, J. Hoeflinger, and D. Padua, "On the Automatic Parallelization of the Perfect Benchmarks," IEEE Trans. Parallel and Distributed Systems, vol. 9, no. 1, pp. 5-23, Jan. 1998.
[17] P. Feautrier, “Dataflow Analysis of Array and Scalar References,” Int'l J. Parallel Programming, vol. 2, no. 1, pp. 23–53, Feb. 1991.
[18] J. Gu, “Interprocedural Array Data-Flow Analysis,” doctoral dissertation, dept. of Computer Science and Eng., Univ. of Minnesota, Dec. 1997.
[19] T. Gross and P. Steenkiste, “Structured Data-Flow Analysis for Arrays and Its Use in an Optimizing Compiler,” Software Practice and Experience, vol. 20, no. 2, pp. 133–155, Feb. 1990.
[20] J. Gu, Z. Li, and G. Lee, “Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization,” Proc. Supercomputing‘95, Dec. 1995.
[21] M.W. Hall, B.R. Murphy, S.P. Amarasinghe, S.-W. Liao, and M.S. Lam, “Interprocedural Analysis for Parallelization,” Proc. Eighth Int'l Workshop Languages and Compilers for Parallel Computing, pp. 61–80, Aug. 1995.
[22] M.R. Haghighat and C.D. Polychronopoulos, “Symbolic Dependence Analysis for Parallelizing Compilers,” Technical report CSRD Report No. 1355, Center for Supercomputing Research and Development, Univ. of Illi nois, 1994.
[23] M.W. Hall et al., "Maximizing Multiprocessor Performance with the SUIF Compiler," Computer, Dec. 1996, pp. 84-89.
[24] P. Havlak and K. Kennedy, "An Implementation of Interprocedural Bounded Regular Section Analysis," IEEE Trans. Parallel and Distributed Systems, vol. 2, no. 3, pp. 350-360, July 1991.
[25] F. Irigoin, P. Jouvelot, and R. Triolet, “Semantical Interprocedural Parallelization: An Overview of the PIPS Project,” Proc. ACM Int'l Conf. Supercomputing, pp. 244-251, 1991.
[26] D. Kuck, The Structure of Computers and Computations, vol. 1. New York: John Wiley and Sons, 1978.
[27] W. Landi and B.G. Ryder, "A Safe Approximate Algorithm for Pointer-Induced Aliasing," Proc. ACM SIGPLAN'92 Conf. Programming Language Design and Implementation (PLDI'92), pp. 235-248, 1992. published as SIGPLAN Notices, vol. 27, no. 7.
[28] W. Landi, B.G. Ryder, and S. Zhang, “Interprocedural Modification Side Effect Analysis with Pointer Aliasing,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 56-67, June 1993.
[29] Z. Li, “Array Privatization for Parallel Execution of Loops,” Proc. ACM Int'l. Conf. Supercomputing, pp. 313-322, July 1992.
[30] Z. Li and P.-C. Yew, “Interprocedural Analysis for Parallel Computing,” Proc. 1988 Int'l Conf. Parallel Proc., pp. 221–228, Aug. 1988.
[31] Z. Li and P.-C. Yew, “Program Parallelization with Interprocedural Analysis,” J. Supercomputing, pp. 225-244, vol. 2, no. 2, Oct. 1988.
[32] V. Maslov, “Lazy Array Data-Flow Dependence Analysis,” Proc. Annual ACM Symp. Principles of Programming Languages, pp. 331-325, Jan. 1994.
[33] D.E. Maydan, S.P. Amarasinghe, and M.S. Lam, “Array Data-flow Analysis and Its Use in Array Privatization,” Proc. 20th ACM Symp. Principles of Programming Languages, pp. 2–15, Jan. 1993.
[34] D.E. Maydan, “Accurate Analysis of Array References,” PhD thesis, Stanford Univ., Oct. 1992.
[35] T. Nguyen, J. Gu, and Z. Li, “An Interprocedural Parallelizing Compiler and Its Support for Memory Hierarchy Research,” Proc. Eighth Int'l Workshop Languages and Compilers for Parallel Computing, pp. 96-110, Aug. 1995
[36] E. Myers, "A Precise Interprocedural Data Flow Algorithm," Conf. Record Eighth ACM Symp. Principles of Programming Languages, pp. 219-230, Jan. 1981.
[37] W. Pugh and D. Wonnacott, “An Exact Method for Analysis of Value-Based Array Data Dependences,” Proc. Sixth Ann. Workshop Programming Languages and Compilers for Parallel Computing, Aug. 1993.
[38] C. Rosene, “Incremental Dependence Analysis,” Technical report CRPC-TR90044, PhD thesis, Computer Science Dept., Rice Univ., Mar. 1990.
[39] E. Ruf, “Context-Insensitive Alias Analysis Reconsidered,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 13-31, June 1995.
[40] R. Triolet, F. Irigoin, and P. Feautrier, "Direct Parallelization of CALL Statements," Proc. SIGPLAN '86 Symp. Compiler Construction, pp. 176-185,Palo Alto, Calif., June 1986.
[41] R. Triolet, “Interprocedural Analysis for Program Restructuring with Parafrase,” Technical report CSRD Rpt. No. 538, Center for Supercomputing Research and Development, Univ. of Illinois, Urbana-Champaign, Dec. 1985.
[42] P. Tu and D. Padua, “Gated SSA-Based Demand-Driven Symbolic Analysis for Parallelizing Compilers,” Proc. Int'l Conf. Supercomputing, pp. 414-423, July 1995.
[43] P. Tu and D. Padua, “Automatic Array Privatization,” Proc. Sixth Int'l Workshop Languages and Compilers for Parallel Computing, pp. 500–521, Aug. 1993.
[44] R.P. Wilson and M.S. Lam, “Efficient Context-Sensitive Pointer Analysis for C Programs,” Proc. Conf. Programming Language Design and Implementation. pp. 1-12, 1995.
[45] S. Zhang, B.G. Ryder, and W. Landi, “Program Decompositon for Pointer Aliasing: A Step Towards Pratical Analyses,” Proc. Symp. Foundations of Software Eng., pp. 81-92, 1996.

Index Terms:
Parallelizing compiler, array data-flow analysis, interprocedural analysis, symbolic analysis.
Citation:
Junjie Gu, Zhiyuan Li, "Efficient Interprocedural Array Data-Flow Analysis for Automatic Program Parallelization," IEEE Transactions on Software Engineering, vol. 26, no. 3, pp. 244-261, March 2000, doi:10.1109/32.842950
Usage of this product signifies your acceptance of the Terms of Use.