Advertisement

Optimization Under the Perspective of Soundness, Completeness, and Reusability

  • Jens Knoop
  • Oliver Rüthing
Chapter
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1710)

Abstract

While soundness and completeness are unchallengedly the surveyor‘s rod for evaluating the worthiness of proof calculi in program verification, it is not common to refer to these terms for rating the worthiness of performance improving transformations in program optimization. In this article we reconsider optimization under the perspective of soundness, completeness, and, additionally, reusability. Soundness can here be interpreted as semantics preservation, completeness as optimality in a specific, well-defined sense, and reusability as paradigm-transcending robustness of the rationale guaranteeing soundness and completeness of an optimization for a specific setting. Using partial redundancy elimination (PRE) for illustration, we demonstrate that these rationales are usually quite sensitive to paradigm changes. Neither completeness nor soundness are generally preserved. Hence, the reuse of optimization strategies in new paradigms requires usually paradigm-specific adaptations in order to accommodate their specifics. We exemplify this for PRE, and demonstrate that it is generally worth the effort, and an effective means for mastering the complexity of compiler construction in the specific field of code optimization.

Keywords

Programming paradigms imperative explicitly parallel object-oriented program optimization data-flow analysis safety coincidence theorems optimizer generators code motion soundness completeness reusability admissibility optimality 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    M. Auslander and M. Hopkins. An overview of the PL.8 compiler. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction (SCC‘82) (Boston, Massachusetts), volume 17, 6 of ACM SIGPLAN Notices, pages 22–31, 1982.Google Scholar
  2. 2.
    S. Benkner, S. Andel, R. Blasko, P. Brezany, A. Celic, B. M. Chapman, M. Egg, T. Fahringer, J. Hulman, E. Kelc, E. Mehofer, H. Moritsch, M. Paul, K. Sanjari, V. Sipkova, B. Velkov, B. Wender, and H. P. Zima. Vienna Fortran Compilation System-Version 1.2-User’s Guide. Institute for Software Technology and Parallel Systems, University of Vienna, Vienna, Austria, 1996.Google Scholar
  3. 3.
    P. Cousot. Abstract interpretation. ACM Computing Surveys, 28(2):324–328, 1996.CrossRefGoogle Scholar
  4. 4.
    P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the 4th Annual Symposium on Principles of Programming Languages (POPL‘77) (Los Angeles, California), pages 238–252. ACM, New York, 1977.Google Scholar
  5. 5.
    P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Conference Record of the 6th Annual Symposium on Principles of Programming Languages (POPL‘79) (San Antonio, Texas), pages 269–282. ACM, New York, 1979.Google Scholar
  6. 6.
    P. Cousot and R. Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511–547, 1992.zbMATHCrossRefMathSciNetGoogle Scholar
  7. 7.
    K.-H. Drechsler and M. P. Stadel. A variation of Knoop, Rüthing and Steffen’s LAZY CODE MOTION. ACM SIGPLAN Notices, 28(5):29–38, 1993.Google Scholar
  8. 8.
    M. S. Hecht. Flow Analysis of Computer Programs. Elsevier, North-Holland, 1977.zbMATHGoogle Scholar
  9. 9.
    J. B. Kam and J. D. Ullman. Monotone data flow analysis frameworks. Acta Informatica, 7:305–317,1977.zbMATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    G. A. Kildall. A unified approach to global program optimization. In Conference Record of the 1st Annual Symposium on Principles of Programming Languages (POPL‘73) (Boston, Massachusetts), pages 194–206. ACM, New York, 1973.Google Scholar
  11. 11.
    M. Klein, J. Knoop, D. Koschützki, and B. Steffen. DFA&OPT-MetaFrame: A tool kit for program analysis and optimization. In Proceedings of the 2nd International Workshop on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘96) (Passau, Germany), Lecture Notes in Computer Science, vol. 1055, pages 422–426. Springer-Verlag, Heidelberg, Germany, 1996.Google Scholar
  12. 12.
    J. Knoop. Eliminating partially dead code in explicitly parallel programs. Theoretical Computer Science, 196(1-2):365–393, 1998. (Special issue devoted to Euro-Par‘96).zbMATHCrossRefMathSciNetGoogle Scholar
  13. 13.
    J. Knoop. Formal callability and its relevance and application to interprocedural data-flow analysis. In Proceedings of the 6th IEEE Computer Society 1998 International Conference on Computer Languages (ICCL‘98) (Chicago, Illinois), pages 252–261. IEEE Computer Society, Los Alamitos, 1998.Google Scholar
  14. 14.
    J. Knoop. Optimal Interprocedural Program Optimization: A new Framework and its Application. PhD thesis. University of Kiel, Germany, 1993. Lecture Notes in Computer Science Tutorial, vol. 1428, Springer-Verlag, Heidelberg, Germany, 1998.Google Scholar
  15. 15.
    J. Knoop. From DFA-frameworks to DFA-generators: A unifying multiparadigm approach. In Proceedings of the 5th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘99) (Amsterdam, The Netherlands), Lecture Notes in Computer Science, vol. 1579, pages 360–374. Springer-Verlag, Heidelberg, Germany, 1999.CrossRefGoogle Scholar
  16. 16.
    J. Knoop and W. Golubski. Abstract interpretation: A uniform framework for type analysis and classical optimization of object-oriented programs. In Proceedings of the 1st International Symposium on Object-Oriented Technology “The White OO Nights” (WOON‘96) (St. Petersburg, Russia), pages 126–142, 1996.Google Scholar
  17. au]17.
    J. K noop, D. Koschützki, and B. Steffen. Basic-block graphs: Living dinosaurs? In Proceedings of the 7th International Conference on Compiler Construction (CC‘98) (Lisbon, Portugal), Lecture Notes in Computer Science, vol. 1383, pages 65–79. Springer-Verlag, Heidelberg, Germany, 1998.Google Scholar
  18. 18.
    J. Knoop and E. Mehofer. Interprocedural distribution assignment placement: More than just enhancing intraprocedural placing techniques. In Proceedings of the 5th IEEE International Conference on Parallel Architectures and Compilation Techniques (PACT‘97) (San Francisco, California), pages 26–37. IEEE Computer Society, Los Alamitos, 1997.Google Scholar
  19. 19.
    J. Knoop and E. Mehofer. Optimal distribution assignment placement. In Proceedings of the 3rd European Conference on Parallel Processing (Euro-Par‘97) (Passau, Germany), Lecture Notes in Computer Science, vol. 1300, pages 364–373. Springer-Verlag, Heidelberg, Germany, 1997.Google Scholar
  20. 20.
    J. Knoop, O. Rüthing, and B. Steffen. Lazy code motion. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘92) (San Francisco, California), volume 27,7 of ACM SIGPLAN Notices, pages 224–234, 1992.Google Scholar
  21. 21.
    J. Knoop, O. Rüthing, and B. Steffen. Optimal code motion: Theory and practice. ACM Transactions on Programming Languages and Systems, 16(4):1117–1155, 1994.CrossRefGoogle Scholar
  22. 22.
    J. Knoop, O. Rüthing, and B. Steffen. Partial dead code elimination. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘94) (Orlando, Florida), volume 29,6 of ACM SIGPLAN Notices, pages 147–158, 1994.Google Scholar
  23. 23.
    J. Knoop, O. Rüthing, and B. Steffen. The power of assignment motion. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI‘95) (La Jolla, California), volume 30,6 of ACM SIGPLAN Notices, pages 233–245, 1995.CrossRefGoogle Scholar
  24. 24.
    J. Knoop, O. Rüthing, and B. Steffen. Towards a tool kit for the automatic generation of interprocedural data flow analyses. Journal of Programming Languages, 4(4):211–246, 1996.Google Scholar
  25. 25.
    J. Knoop, O. Rüthing, and B. Steffen. Code motion and code placement: Just synomyms? In Proceedings of the 7th European Symposium on Programming (ESOP‘98) (Lisbon, Portugal), Lecture Notes in Computer Science, vol. 1381, pages 154–169. Springer-Verlag, Heidelberg, Germany, 1998.Google Scholar
  26. 26.
    J. Knoop and F. Schreiber. Analysing and optimizing strongly typed objectoriented languages: A generic approach and its application to Oberon-2. In Proceedings of the 2nd International Symposium on Object-Oriented Technology “The White OO Nights★#x201D; (WOON‘97) (St. Petersburg, Russia), pages 252–266, 1997.Google Scholar
  27. 27.
    J. Knoop and B. Steffen. Code motion for explicitly parallel programs. In Proceedings of the 7th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP‘99) (Atlanta, Georgia), pages 13–14, 1999.Google Scholar
  28. 28.
    J. Knoop and B. Steffen. The interprocedural coincidence theorem. In Proceedings of the 4th International Conference on Compiler Construction (CC‘92) (Paderborn, Germany), Lecture Notes in Computer Science, vol. 641, pages 125–140. Springer-Verlag, Heidelberg, Germany, 1992.Google Scholar
  29. 29.
    J. Knoop, B. Steffen, and J. Vollmer. Parallelism for free: Bitvector analyses → No state explosion! In Proceedings of the 1st International Workshop on Tools and Algorithms for the Construction and Analysis of Systems (TACAS‘95) (Aarhus, Denmark), Lecture Notes in Computer Science, vol. 1019, pages 264–289. Springer-Verlag, Heidelberg, Germany, 1995.Google Scholar
  30. 30.
    J. Knoop, B. Steffen, and J. Vollmer. Parallelism for free: Efficient and optimal bitvector analyses for parallel programs. ACM Transactions on Programming Languages and Systems, 18(3):268–299, 1996.CrossRefGoogle Scholar
  31. 31.
    K. Marriot. Frameworks for abstract interpretation. Acta Informatica, 30:103–129, 1993.CrossRefMathSciNetGoogle Scholar
  32. 32.
    E. Morel and C. Renvoise. Global optimization by suppression of partial redundancies. Communications of the ACM, 22(2):96–103, 1979.zbMATHCrossRefMathSciNetGoogle Scholar
  33. 33.
    E. Morel and C. Renvoise. Interprocedural elimination of partial redundancies. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 160–188. Prentice Hall, Englewood Cliffs, New Jersey, 1981.Google Scholar
  34. 34.
    R. Morgan. Building an Optimizing Compiler. Digital Press, 1998.Google Scholar
  35. 35.
    S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, California, 1997.Google Scholar
  36. 36.
    S. S. Muchnick and N. D. Jones, editors. Program Flow Analysis: Theory and Applications. Prentice Hall, Englewood Cliffs, New Jersey, 1981.zbMATHGoogle Scholar
  37. 37.
    F. Nielson. A bibliography on abstract interpretations. ACM SIGPLAN Notices, 21:31–38, 1986.Google Scholar
  38. 38.
    J. Palsberg and M. I. Schwartzbach. Object-oriented Type Systems. John Wiley & Sons, 1994.Google Scholar
  39. 39.
    Jens Palsberg. Type inference for objects. ACM Computing Surveys, 28(2):358–359, June 1996.CrossRefGoogle Scholar
  40. 40.
    O. Rüthing. Bidirectional data flow analysis in code motion: Myth and reality. In Proceedings of the 5th Static Analysis Symposium (SAS‘98) (Pisa, Italy), Lecture Notes in Computer Science, vol. 1503, pages 1–16. Springer-Verlag, Heidelberg, Germany, 1998.Google Scholar
  41. 41.
    O. Rüthing. Interacting Code Motion Transformations: Their Impact and Their Complexity. PhD thesis. University of Kiel, Germany, 1997. Lecture Notes in Computer Science, vol. 1539, Springer-Verlag, Heidelberg, Germany, 1998.Google Scholar
  42. 42.
    O. Rüthing. Optimal code motion in the presence of large expressions. In Proceedings of the 6th IEEE Computer Society 1998 International Conference on Computer Languages (ICCL‘98) (Chicago, Illinois), pages 216–225. IEEE Computer Society, Los Alamitos, 1998.Google Scholar
  43. 43.
    O. Rüuthing, J. Knoop, and B. Steffen. Sparse code motion. Technical Report 712/1999, Department of Computer Science, University of Dortmund, Germany, 1999.Google Scholar
  44. 44.
    M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In S. S. Muchnick and N. D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 189–233. Prentice Hall, Englewood Cliffs, New Jersey, 1981.Google Scholar
  45. 45.
    VFCS/VFC Homepage. Institute for Softwaretechnology and Parallel Systems, University of Vienna, Austria, http://www.par.univie.ac.at/research/langcomp/ lang-comp.html.

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Jens Knoop
    • 1
  • Oliver Rüthing
    • 1
  1. 1.Universität DortmundGermany

Personalised recommendations