Skip to main content
Log in

Hybrid Analysis: Static & Dynamic Memory Reference Analysis

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

Abstract

We present a novel Hybrid Analysis technology which can efficiently and seamlessly integrate all static and run-time analysis of memory references into a single framework that is capable of performing all data dependence analysis and can generate necessary information for most associated memory related optimizations. We use HA to perform automatic parallelization by extracting run-time assertions from any loop and generating appropriate run-time tests that range from a low cost scalar comparison to a full, reference by reference run-time analysis. Moreover we can order the run-time tests in increasing order of complexity (overhead) and thus risk the minimum necessary overhead. We accomplish this by both extending compile time IP analysis techniques and by incorporating speculative run-time techniques when necessary. Our solution is to bridge “free” compile time techniques with exhaustive run-time techniques through a continuum of simple to complex solutions. We have implemented our framework in the Polaris compiler by introducing an innovative intermediate representation called RT_LMAD and a run-time library that can operate on it. Based on the experimental results obtained to date we hope to automatically parallelize most and possibly all PERFECT codes, a significant accomplishment.

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. 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, Advanced Program Restructuring for High-Performance Computers with Polaris, IEEE Computer, 29(12):78–82 (December 1996).

    Google Scholar 

  2. B. Creusillet and F. Irigoin, Interprocedural Array Region Analyses, Springer-Verlag (August 1995).

  3. R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and K. Zadeck, An Efficient Method of Computing Static Single Assignment Form, 16th Annual ACM Symposium on Principles of Programming Languages, pp. 26–35, Austin, Texas (January 1989).

    Google Scholar 

  4. R. Cytron, J. Ferrante, and V. Sarkar, Compact Representations for Control Dependence, ACM SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 337–351, White Plains, N.Y. (June 1990).

    Google Scholar 

  5. F. Dang and L. Rauchwerger, Speculative Parallelization of Partially Parallel Loops, Proc. 5th Int'l. Workshop, Languages, Compilers and Run-time Systems for Scalable Computing, Lecture Notes in Computer Science (May 2000).

  6. F. Dang, H. Yu, and L. Rauchwerger, The R-LRPD Test: Speculative Parallelization of Partially Parallel Loops, Proc. Int'l. Parallel and Distributed Processing Symposium (April 2002).

  7. K. Cooper et al., The Parascope Parallel Programming Environment, Proceedings of IEEE, pp. 84–89 (February 1993).

  8. M. Gupta, E. Schonberg, S. Midkiff, P. Sweeney, K.-Y. Wang, and M. Burke, PTRAN II —A Compiler for High Performance Fortran, Proceedings of the 4th Workshop on Compilers for Parallel Computers (December 1993).

  9. M. R. Haghighat and C. D. Polychronopoulos, Symbolic Analysis: A Basis for Parallelization, Optimization and Scheduling of Programs, 1993 Workshop on Languages and Compilers for Parallel Computing, number 768 in Lecture Notes in Computer Science, pp. 567–585, Springer-Verlag, Berlin, Portland, Oregon (August 1993).

    Google Scholar 

  10. M. Hall, J. Anderson, S. Amarasinghe, B. Murphy, S.-W. Liao, E. Bugnion, and M. Lam, Maximizing Multiprocessor Performance with the SUIF Compiler, IEEE Computer, 29(12):84–89 (December 1996).

    Google Scholar 

  11. M. W. Hall, Managing Interprocedural Optimization, Technical Report TR91–157, Rice University, Computer Science Department, 28 (1998).

  12. J. Hoeflinger, Interprocedural Parallelization Using Memory Classification Analysis, Ph.D. thesis, University of Illinois, Urbana-Champaign (August 1998).

    Google Scholar 

  13. J. Knoop, Optimal Interprocedural Program Optimization: A New Framework and Its Application, Ph.D. thesis, Department of Computer Science, University of Kiel (1993).

  14. S.-W. Liao, A. Diwan, R. P. Bosch, Jr., A. M. Ghuloum, and M. S. Lam, SUIF Explorer: An Interactive and Interprocedural Parallelizer, Principles Practice of Parallel Programming, pp. 37–48 (1999).

  15. Y. Lin and D. Padua, Compiler Analysis of Irregular Memory Accesses, ACM SIGPLAN '00 Conference on Programming Language Design and Implementation.

  16. Y. Paek, J. Hoeflinger, and D. Padua, Simplification of Array Access Patterns for Compiler Optimizations, Proceedings of the SIGPLAN 1998 Conference on Programming Language Design and Implementation, Montreal, Canada (June 1998).

  17. D. Patel and L. Rauchwerger, Principles of Speculative Run-Time Parallelization, Proceedings 13th Annual Workshop on Programming Languages and Compilers for Parallel Computing, pp. 330–351 (August 1998).

  18. W. Pugh, The Omega Test: A Fast and Practical Integer Programming Algorithm for Dependence Analysis, Supercomputing '91, pp. 4–13, Albuquerque, New Mexico (November 1991).

  19. L. Rauchwerger, N. Amato, and D. Padua, Run-Time Methods for Parallelizing Partially Parallel Loops, Proceedings of the 9th ACM International Conference on Supercomputing, Barcelona, Spain, pp. 137–146 (July 1995).

  20. L. Rauchwerger and D. A. Padua, The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction Parallelization, IEEE Transactions on Parallel and Distributed Systems, 10(2) (1999).

  21. R. Rugina and M. C. Rinard, Symbolic Bounds Analysis of Pointers, Array Indices, and Accessed Memory Regions, SIGPLAN Conference on Programming Language Design and Implementation, pp. 182–195 (2000).

  22. J. Saltz, R. Mirchandaney, and K. Crowley, Run-Time Parallelization and Scheduling of Loops, IEEE Trans. Comput., 40(5) (May 1991).

  23. B. R. Murphy, S. Moon, and M. W. Hall, Predicated Array Data-Flow Analysis for Runtime Parallelization, Proceedings of the 12th ACM International Conference on Supercomputing (July 1988).

  24. R. Triolet, F. Irigoin, and P. Feautrier, Direct Parallelization of Call Statements, ACM SIGPLAN '86 Symposium on Compiler Construction, pp. 175–185, Palo Alto, California (June 1986).

  25. M. Weiser, Program Slicing, IEEE Trans. Softw. Eng., 10(4):352–357 (July 1984).

    Google Scholar 

  26. H. Yu and L. Rauchwerger, Run-Time Parallelization Overhead Reduction Techniques, Proc. 9th International Conference on Compiler Construction (CC2000), Berlin, German, Lecture Notes in Computer Science, Springer-Verlag (March 2000).

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Rus, S., Rauchwerger, L. & Hoeflinger, J. Hybrid Analysis: Static & Dynamic Memory Reference Analysis. International Journal of Parallel Programming 31, 251–283 (2003). https://doi.org/10.1023/A:1024597010150

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1024597010150

Navigation