Summary
Array data flow information plays an important role for successful automatic parallelization of Fortran programs. This chapter proposes a powerful symbolic array data flow summary scheme to support array privatization and loop parallelization for programs with arbitrary control flow graphs and acyclic call graphs. Our approach summarizes array access information interprocedurally, using guarded array regions. The use of guards allows us to use the information in IF conditions to do path-sensitive data flow summary and thereby to handle difficult cases. We also provide a mechanism to overcome the disadvantages of nonclosed union and difference operations. This improves not only the exactness of summaries, but also the efficiency of the summarizing procedure. Our preliminary result on array privatization shows that our summary scheme is fast and powerful.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Aho, A.V., Sethi, R., Ullman, J.D. (1986). Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, Mass.
Balasundaram, V. (1990). A Mechanism for Keeping Useful Internal Information in Parallel Programming Tools: The Data Access Descriptor. Journal of Parallel and Distributed Computing, 9:154–170.
Blume, W., Eigenmann, R. (1994). Symbolic Analysis Techniques Needed for the Effective Parallelization of Perfect Benchmarks. Technical report, Dept. of Computer Science, University of Illinois.
Blume, W., Eigenman, R. (1992). Performance Analysis of Parallelizing Compilers on the Perfect Benchmarks Programs. IEEE Trans. on Parallel and Distributed Systems, November, 3(6):643–656.
Callahan, D., Kennedy, K. (1986). Analysis of interprocedural side effects in a parallel programming environment. ACM SIGPLAN’ 86 Symp. Compiler Construction, June, 162–175.
Clarke, L.A., Richardson, D.J. (1985). Applications of Symbolic Evaluation. The Journal of Systems and Software, 5(1):15–35
Creusillet, B., Irigoin, F. (1995). Interprocedural Array Region Analyses. Proceedings of the 8th Workshop on Languages and Compilers for Parallel Computing, held in Columbus, Ohio, August, No. 1033, In Lecture Notes in Computer Science, Springer-Verlag, Berlin, 46–60.
Duesterwald, E., Gupta, R., Soffa, M.L. (1993). A Practical Data Flow Framework for Array Reference Analysis and its Use in Optimizations. ACM SIGPLAN’ 93 Conf. on Programming Language Design and Implementation, June, 68–77.
Eigenmann, R., Hoeflinger, J., Li, Z., Padua, D. (1992). Experience in the Automatic Parallelization of Four Perfect Benchmark Programs. Lecture Notes in Computer Science, 589, Springer-Verlag.
Feautrier, P. (1991). Dataflow Analysis of Array and Scalar References. International Journal of Parallel Programming, February, 2(1):23–53.
Gross, T., Steenkiste, P. (1990). Structured dataflow analysis for arrays and its use in an optimizing compiler. Software — Practice and Experience, February, 20(2):133–155.
Gu, J., Li, Z., Lee, G. (1995). Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization. Supercomputing’95, December, San Diego, CA.
Haghighat, M.R., Polychronopoulos, C.D. (1994). Symbolic analysis for Parallelizing Compilers. Technical report, CSRD Report No. 1355, University of Illinois.
Hall, M, Murphy, B., Amarasinghe, S., Liao, S., Lam, M. (1995). Interprocedural Analysis for Parallelization. Proceedings of the 8th Workshop on Languages and Compilers for Parallel Computing, held in Columbus, Ohio, August, No. 1033, In Lecture Notes in Computer Science, Springer-Verlag, Berlin, 61–80.
Havlak, P., Kennedy, K. (1991). An implementation of interprocedural bounded regular section analysis. IEEE Trans. on Parallel and Distributed Systems, 2(3):350–360.
Irigoin, F., Jouvelot, P., Triolet, R. (1991). Semantical Interprocedural Parallelization: An overview of the PIPS Project. International Conference on Supercomputing, 244–251.
Li, Z. (1992). Array Privatization for Parallel Execution of Loops. ACM Int. Conf. on Supercomputing, July, 313–322.
Li, Z., Yew, P.C. (1988). Efficient interprocedural analysis for program parallelization and restructuring. ACM SIGPLAN Conf. on Parallel Programming: Experience with Applications, Languages and Systems, September, 85–99.
Maslov, V. (1994). Lazy Array Data-Flow Dependence Analysis. Proceedings of Annual ACM Symposium on Principles of Programming Languages, January, Portland, Oregon, 331–325.
Maydan, D.E., Amarasinghe, S.P., Lam, M.S. (1993). Array Data-Flow Analysis and its Use in Array Privatization. Proc. of the 20th ACM Symp. on Principles of Programming Languages, January, 2–15.
Maydan, D.E. (1992). Accurate Analysis of Array References. PhD thesis, October, Stanford University.
Myers, E.W. (1981). A Precise Interprocedural Data-Flow Algorithm. Proceedings of 8th Annual ACM Symposium on Principles of Programming Languages. January, 219–230.
Nguyen, T., Gu, J., Li, Z. (1995). An Interprocedural Parallelizing Compiler and its support for Memory Hierarchy Research. Lecture Notes in Computer Science 1033: 8th International Workshop on Languages and Compilers for Parallel Computing, Columbus, Ohio, August, 96–110.
Pugh, W., Wonnacott, D. (1993). An Exact Method for Analysis of Value-based Array Data Dependences. Lecture Notes in Computer Science 768: Sixth Annual Workshop on Programming Languages and Compilers for Parallel Computing, Portland, OR, August.
Rosene, C. (1990). Incremental Dependence Analysis. Technical report, CRPCTR90044, PhD thesis, Computer Science Department, Rice University.
Cheatham, T.E. Jr, Holloway, G.H., Townley, J.A. (1979). Symbolic Evaluation and the Analysis of Programs. IEEE Trans. on Software Engineering, July, 5(4):402–417.
Triolet, R., Irigoin, F., Feautrier, P. (1986). Direct Parallelization of CALL Statments. ACM SIGPLAN’86 Sym. on Compiler Construction, Palo Alto, CA, July, 176–185.
Triolet, R. (1985). Interprocedural Analysis for Program Restructuring with Parafrase. Technical report, Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign.
Tu, P., Padua, D. (1993). Automatic Array Privatization. Proceedings of Sixth Workshop on Languages and Compilers for Parallel Computing, Portland, OR, August, 500–521.
Wolfe, M. (1996). High Performance Compilers for Parallel Computing. Addison-Wesley Publishing Company.
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
Li, Z., Gu, J., Lee, G. (2001). Interprocedural Analysis Based on Guarded Array Regions. 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_7
Download citation
DOI: https://doi.org/10.1007/3-540-45403-9_7
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