Skip to main content

Interprocedural Analysis Based on Guarded Array Regions

  • Chapter
  • First Online:
Compiler Optimizations for Scalable Parallel Systems

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1808))

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.

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

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

    Google Scholar 

  2. 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.

    Article  Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Article  Google Scholar 

  5. Callahan, D., Kennedy, K. (1986). Analysis of interprocedural side effects in a parallel programming environment. ACM SIGPLAN’ 86 Symp. Compiler Construction, June, 162–175.

    Google Scholar 

  6. Clarke, L.A., Richardson, D.J. (1985). Applications of Symbolic Evaluation. The Journal of Systems and Software, 5(1):15–35

    Article  Google Scholar 

  7. 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.

    Chapter  Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. Feautrier, P. (1991). Dataflow Analysis of Array and Scalar References. International Journal of Parallel Programming, February, 2(1):23–53.

    Article  Google Scholar 

  11. 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.

    Article  Google Scholar 

  12. Gu, J., Li, Z., Lee, G. (1995). Symbolic Array Dataflow Analysis for Array Privatization and Program Parallelization. Supercomputing’95, December, San Diego, CA.

    Google Scholar 

  13. Haghighat, M.R., Polychronopoulos, C.D. (1994). Symbolic analysis for Parallelizing Compilers. Technical report, CSRD Report No. 1355, University of Illinois.

    Google Scholar 

  14. 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.

    Chapter  Google Scholar 

  15. Havlak, P., Kennedy, K. (1991). An implementation of interprocedural bounded regular section analysis. IEEE Trans. on Parallel and Distributed Systems, 2(3):350–360.

    Article  Google Scholar 

  16. Irigoin, F., Jouvelot, P., Triolet, R. (1991). Semantical Interprocedural Parallelization: An overview of the PIPS Project. International Conference on Supercomputing, 244–251.

    Google Scholar 

  17. Li, Z. (1992). Array Privatization for Parallel Execution of Loops. ACM Int. Conf. on Supercomputing, July, 313–322.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. Maslov, V. (1994). Lazy Array Data-Flow Dependence Analysis. Proceedings of Annual ACM Symposium on Principles of Programming Languages, January, Portland, Oregon, 331–325.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. Maydan, D.E. (1992). Accurate Analysis of Array References. PhD thesis, October, Stanford University.

    Google Scholar 

  22. Myers, E.W. (1981). A Precise Interprocedural Data-Flow Algorithm. Proceedings of 8th Annual ACM Symposium on Principles of Programming Languages. January, 219–230.

    Google Scholar 

  23. 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.

    Chapter  Google Scholar 

  24. 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.

    Google Scholar 

  25. Rosene, C. (1990). Incremental Dependence Analysis. Technical report, CRPCTR90044, PhD thesis, Computer Science Department, Rice University.

    Google Scholar 

  26. 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.

    Article  Google Scholar 

  27. 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.

    Google Scholar 

  28. Triolet, R. (1985). Interprocedural Analysis for Program Restructuring with Parafrase. Technical report, Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign.

    Google Scholar 

  29. Tu, P., Padua, D. (1993). Automatic Array Privatization. Proceedings of Sixth Workshop on Languages and Compilers for Parallel Computing, Portland, OR, August, 500–521.

    Google Scholar 

  30. Wolfe, M. (1996). High Performance Compilers for Parallel Computing. Addison-Wesley Publishing Company.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics