Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2384616.2384629acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Optimization coaching: optimizers learn to communicate with programmers

Published: 19 October 2012 Publication History

Abstract

Optimizing compilers map programs in high-level languages to high-performance target language code. To most programmers, such a compiler constitutes an impenetrable black box whose inner workings are beyond their understanding. Since programmers often must understand the workings of their compilers to achieve their desired performance goals, they typically resort to various forms of reverse engineering, such as examining compiled code or intermediate forms. Instead, optimizing compilers should engage programmers in a dialog. This paper introduces one such possible form of dialog: optimization coaching. An optimization coach watches while a program is compiled, analyzes the results, generates suggestions for enabling further compiler optimization in the source program, and presents a suitable synthesis of its results to the programmer. We present an evaluation based on case studies, which illustrate how an optimization coach can help programmers achieve optimizations resulting in substantial performance improvements.

References

[1]
Norman Adams, David Kranz, Richard Kelsey, Jonathan Rees, Paul Hudak, and James Philbin. ORBIT: an optimizing compiler for Scheme. In Proc. Symp. on Compiler Construction, 1986.
[2]
Erik Altman, Matthew Arnold, Stephen Fink, and Nick Mitchell. Performance analysis of idle programs. In Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 739--753, 2010.
[3]
Glenn Ammons, Jong-Deok Choi, Manish Gupta, and Nikhil Swamy. Finding and removing performance bottlenecks in large systems. In Proc. European Conf. on Object-Oriented Programming, pp. 172--196, 2004.
[4]
Andrew Appel and Trevor Jim. Continuation-passing, closure-passing style. In Proc. Symp. on Principles of Programming Languages, pp. 293--302, 1989.
[5]
David Binkley, Bruce Duncan, Brennan Jubb, and April Wielgosz. The FeedBack compiler. In Proc. International Works. on Program Comprehension, pp. 198--206, 1998.
[6]
John Clements, Matthew Flatt, and Matthias Felleisen. Modeling an algebraic stepper. In Proc. European Symp. on Programming, pp. 320--334, 2001.
[7]
Ryan Culpepper and Matthias Felleisen. Debugging hygienic macros. Science of Computer Programming 75(7), pp. 496--515, 2010.
[8]
Jeffrey Dean, David Grove, and Craig Chambers. Optimization of object-oriented programs using static class hierarchy analysis. In Proc. European Conf. on Object-Oriented Programming, pp. 77--101, 1995.
[9]
Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: a programming environment for Scheme. J. of Functional Programming 12(2), pp. 159--182, 2002.
[10]
Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Stephanie Weirich, and Matthias Felleisen. Catching bugs in the web of program invariants. In Proc. Conf. on Programming Language Design and Implementation, pp. 23--32, 1996.
[11]
Matthew Flatt and PLT. Reference: Racket. PLT Inc., PLT-TR-2010-1, 2010. http://racket-lang.org/tr1/
[12]
Agner Fog. Software optimization resources. 2012. http://www.agner.org/optimize/
[13]
Christopher W. Fraser and David R. Hanson. A Retargetable C Compiler: Design and Implementation. Addison-Wesley, 1995.
[14]
Saturnino Garcia, Donghwan Jeon, Chris Louie, and Michael Bed-ford Taylor. Kremlin: rethinking and rebooting gprof for the multicore age. In Proc. Programming Language Design and Implementation, pp. 458--469, 2011.
[15]
Brian Hackett and Shu-Yu Guo. Fast and precise type inference for JavaScript. In Proc. Conf. on Programming Language Design and Implementation, pp. 239--250, 2012.
[16]
William von Hagen. The Definitive Guide to GCC. Apress, 2006.
[17]
Guoliang Jin, Linhai Song, Xiaoming Shi, Joel Scherpelz, and Shan Lu. Understanding and detecting real-world performance bugs. In Proc. Conf. on Programming Language Design and Implementation, pp. 77--88, 2012.
[18]
Milan Jovic, Andrea Adamoli, and Matthias Hauswirth. Catch me of you can: performance bug detection in the wild. In Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 155--170, 2011.
[19]
Donald E. Knuth. An empirical study of FORTRAN programs. Software--Practice and Experience 1, pp. 105--133, 1971.
[20]
Xavier Leroy. Unboxed objects and polymorphic typing. In Proc. Symp. on Principles of Programming Languages, pp. 177--188, 1992.
[21]
Peter A. W. Lewis, A. S. Goodman, and J. M. Miller. A pseudo-random number generator for the System/360. IBM Systems Journal 8(2), pp. 136--146, 1969.
[22]
Jennifer Lhoták, Ondrej Lhoták, and Laurie J. Hendren. Integrating the Soot compiler infrastructure into an IDE. In Proc. Symp. on Compiler Construction, pp. 281--297, 2004.
[23]
Stephen S. Muchnick. Advanced Compiler Design and Implementation. Morgan-Kaufmann, 1997.
[24]
Simon L Peyton Jones. Compiling Haskell by program transformation a report from the trenches. In Proc. European Symp. on Programming, pp. 18--44, 1996.
[25]
Feng Qian, Laurie J. Hendren, and Clark Verbrugge. A comprehensive approach to array bounds check elimination for Java. In Proc. Symp. on Compiler Construction, pp. 325--342, 2002.
[26]
Manuel Serrano. Inline expansion: when and how. In Proc. International Symp. on Programming Language Implementation and Logic Programming, pp. 143--147, 1997.
[27]
Zhong Shao and Andrew Appel. A type-based compiler for standardML. In Proc. Conf. on Programming Language Design and Implementation, pp. 116--129, 1995.
[28]
Jennifer Elizabeth Shaw. Visualisation Tools for Optimizing Compilers. MS dissertation, McGill University, 2005.
[29]
Vincent St. Amour, Sam Tobin-Hochstadt, Matthew Flatt, and Matthias Felleisen. Typing the numeric tower. In Proc. International Symp. on Practical Aspects of Declarative Languages, pp. 289--303, 2012.
[30]
The Free Software Foundation. GCC 4.7.0 Manual. 2012.
[31]
The GHC Team. The Glorious Glasgow Haskell Compilation System User's Guide, Version 7.4.1. 2011.
[32]
The SBCL Team. SBCL 1.0.55 User Manual. 2012.
[33]
Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as libraries. In Proc. Programming Language Design and Implementation, pp. 132--141, 2011.
[34]
Raja Vallée-Rai, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan. Optimizing Java bytecode using the Soot framework: is it feasible? In Proc. Symp. on Compiler Construction, pp. 18--34, 2000.
[35]
Michael Wolfe. Loop skewing: the wavefront method revisited. J. of Parallel Programming 15(4), pp. 279--293, 1986.
[36]
Nicholas C. Zakas. High Performance JavaScript. O'Reilly, 2010.

Cited By

View all
  • (2024)Finding Cuts in Static Analysis Graphs to Debloat SoftwareProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680306(603-614)Online publication date: 11-Sep-2024
  • (2019)Which of my transient type checks are not (almost) free?Proceedings of the 11th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3358504.3361232(58-66)Online publication date: 22-Oct-2019
  • (2019)Optimization coaching for fork/join applications on the Java virtual machineCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328441(1-3)Online publication date: 1-Apr-2019
  • Show More Cited By

Index Terms

  1. Optimization coaching: optimizers learn to communicate with programmers

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
    October 2012
    1052 pages
    ISBN:9781450315616
    DOI:10.1145/2384616
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 47, Issue 10
      OOPSLA '12
      October 2012
      1011 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2398857
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 19 October 2012

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. optimization coaching
    2. visualization

    Qualifiers

    • Research-article

    Conference

    SPLASH '12
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 268 of 1,244 submissions, 22%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)15
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 24 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Finding Cuts in Static Analysis Graphs to Debloat SoftwareProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680306(603-614)Online publication date: 11-Sep-2024
    • (2019)Which of my transient type checks are not (almost) free?Proceedings of the 11th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3358504.3361232(58-66)Online publication date: 22-Oct-2019
    • (2019)Optimization coaching for fork/join applications on the Java virtual machineCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328441(1-3)Online publication date: 1-Apr-2019
    • (2019)Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structuresProceedings of the ACM on Programming Languages10.1145/32903423:POPL(1-30)Online publication date: 2-Jan-2019
    • (2018)Object-oriented recovery for non-volatile memoryProceedings of the ACM on Programming Languages10.1145/32765232:OOPSLA(1-22)Online publication date: 24-Oct-2018
    • (2018)Reactive caching for composed services: polling at the speed of pushProceedings of the ACM on Programming Languages10.1145/32765222:OOPSLA(1-28)Online publication date: 24-Oct-2018
    • (2018)Cross-component garbage collectionProceedings of the ACM on Programming Languages10.1145/32765212:OOPSLA(1-24)Online publication date: 24-Oct-2018
    • (2018)FlashProfile: a framework for synthesizing data profilesProceedings of the ACM on Programming Languages10.1145/32765202:OOPSLA(1-28)Online publication date: 24-Oct-2018
    • (2018)Finding code that explodes under symbolic evaluationProceedings of the ACM on Programming Languages10.1145/32765192:OOPSLA(1-26)Online publication date: 24-Oct-2018
    • (2018)Feature-Specific ProfilingACM Transactions on Programming Languages and Systems10.1145/327551941:1(1-34)Online publication date: 19-Dec-2018
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media