Abstract
Research over the past five years has shown significant performance improvements using a technique called adaptive compilation. An adaptive compiler uses a compile-execute-analyze feedback loop to find the combination of optimizations and parameters that minimizes some performance goal, such as code size or execution time.Despite its ability to improve performance, adaptive compilation has not seen widespread use because of two obstacles: the large amounts of time that such systems have used to perform the many compilations and executions prohibits most users from adopting these systems, and the complexity inherent in a feedback-driven adaptive system has made it difficult to build and hard to use.A significant portion of the adaptive compilation process is devoted to multiple executions of the code being compiled. We have developed a technique called virtual execution to address this problem. Virtual execution runs the program a single time and preserves information that allows us to accurately predict the performance of different optimization sequences without running the code again. Our prototype implementation of this technique significantly reduces the time required by our adaptive compiler.In conjunction with this performance boost, we have developed a graphical-user interface (GUI) that provides a controlled view of the compilation process. By providing appropriate defaults, the interface limits the amount of information that the user must provide to get started. At the same time, it lets the experienced user exert fine-grained control over the parameters that control the system.
- L. Almagor, Keith D. Cooper, Alexander Grosul, Timothy J. Harvey, Steven W. Reeves, Devika Subramanian, Linda Torczon, and Todd Waterman. Finding effective compilation sequences. In Proceedings of LCTES 2004, pages 231--239, June 2004. Google ScholarDigital Library
- Bowen Alpern, Mark N. Wegman, and F. Kenneth Zadeck. Detecting equality of variables in programs. In Conference Record of th 15th POPL, pages 1--11, San Diego, CA, USA, January 1988. Google ScholarDigital Library
- Thomas Ball and James R. Larus. Optimally profiling and tracing programs. In Proceedings of the Nineteenth Annual ACM Symposium on Principles of Programming Languages, pages 59--70, January 1992. Google ScholarDigital Library
- Preston Briggs. The Massively Scalar Compiler Project. Appendix B of a nuweb document that forms part of the Mscp infrastructure. Available online as www.cs.rice.edu/~keith/EAC/iloc.pdf., July 1994.Google Scholar
- Preston Briggs and Keith D. Cooper. Effective partial redundancy elimination. In Proceedings of ACM SIGPLAN 94 PLDI, pages 159--170, June 1994. Google ScholarDigital Library
- Gregory J. Chaitin, Marc A. Auslander, Ashok K. Chandra, John Cocke, Martin E. Hopkins, and Peter W. Markstein. Register allocation via graph coloring. Computer Languages, 6(1):47--57, January 1981.Google ScholarDigital Library
- Keith D. Cooper, Alexander Grosul, Timothy J. Harvey, Steve Reeves, Devika Subramanian, Linda Torczon, and Todd Waterman. Searching for compilation sequences. 2005. Submitted for publication.Google Scholar
- Keith D. Cooper, Philip J. Schielke, and Devika Subramanian. Optimizing for reduced code space using genetic algorithms. In Proceedings of LCTES 1999, pages 1--9, May 1999. Google ScholarDigital Library
- Keith D. Cooper, Devika Subramanian, and Linda Torczon. Adaptive optimizing compilers for the 21st century. In Proceedings of the 2001 LACSI Symposium. Los Alamos Computer Science Institute, Santa Fe, NM, October 2001.Google Scholar
- Keith D. Cooper and Linda Torczon. Engineering a Compiler. Morgan-Kaufmann Publishers, 2003.Google Scholar
- Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM TOPLAS, 13(4):451--490, October 1991. Google ScholarDigital Library
- Jack W. Davidson and Christopher W. Fraser. The design and application of a retargetable peephole optimizer. ACM TOPLAS, 2(2):191--202, April 1980. Google ScholarDigital Library
- Susan L. Graham, Peter B. Kessler, and Marshall K. McKusick. gprof: a call graph execution profiler. In Proceedings of the 1982 SIGPLAN Symposium on Compiler Constrion, pages 120--126, June 1982. Google ScholarDigital Library
- Elana Granston and Anne Holler. Automatic recommendation of compiler options. In Proceedings of the 4th Feedback Directed Optimization Workshop, December 2001.Google Scholar
- Alexander Grosul. Adaptive Ordering of Code Transformations in an Optimizing Compiler. PhD thesis, Rice University, 2005. Google ScholarDigital Library
- Jin-Kao Hao, Frédéric Lardeux, and Frédéric Saubion. A hybrid genetic algorithm for the satisfiability problem. In Proceedings of the First International Workshop on Heuristics, Beijing, China, July 2002.Google Scholar
- Toru Kisuki, Peter M.W. Knijnenburg, and Michael F.P. O'Boyle. Combined selection of tile sizes and unroll factors using iterative compilation. In Proceedings of PACT '00, pages 237--248, October 2000. Google ScholarDigital Library
- Jens Knoop, Oliver Rüthing, and Bernhard Steffen. Lazy code motion. In Proceedings of the ACM SIGPLAN 92 PLDI, pages 224--234, July 1992. Google ScholarDigital Library
- Prasad Kulkarni, Stephen Hines, Jason Hiser, David Whalley, Jack Davidson, and Douglas Jones. Searches for effective optimization phase sequences. In Proceedings of ACM SIGPLAN 2004 PLDI, pages 171--182, May 2004. Google ScholarDigital Library
- Prasad Kulkarni, Wankang Zhao, Hwashin Moon, Kyunghwan Cho, David Whaley, Jack Davidson, Mark Bailey, Yunheung Paek, and Kyle Gallivan. Finding effective optimization phase sequences. In Proceedings of the 2003 ACM SIGPLAN Conference on Languages, Tools, and Compilers for Embedded Systems, pages 12--23, June 2003. Google ScholarDigital Library
- Kathryn S. McKinley, Steve Carr, and Chau-Wen Tseng. Improving data locality with loop transformations. ACM Transactions on Programming Languages and Systems (TOPLAS), 18(4):424--453, July 1996. Google ScholarDigital Library
- Etienne Morel and Claude Renvoise. Global optimization by suppression of partial redundancies. Communications of the ACM, 22(2):96--103, February 1979. Google ScholarDigital Library
- L. Taylor Simpson. Value-Driven Redundancy Elimination. PhD thesis, Rice University, 1996. Google ScholarDigital Library
- Mark Stephenson, Saman Amarasinghe, Martin Martin, and Una-May O'Reilly. Meta optimization: improving compiler heuristics with machine learning. In Proceedings of the ACM SIGPLAN 2003 PLDI, pages 77--90, May 2003. Google ScholarDigital Library
- Spyridon Triantifyllis, Manish Vachharajani, Neil Vachharajani, and David I. August. Compiler optimization-space exploration. In Proceedings of the 1st CGO, March 2003. Google ScholarDigital Library
- Mark Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches. ACM TOPLAS, 13(2):181--210, April 1991. Google ScholarDigital Library
- Deborah L. Whitfield and Mary Lou Soffa. An approach for exploring code improving transformations. ACM TOPLAS, 19(6):1053--1084, November 1997. Google ScholarDigital Library
- M. Zhao, B. Childers, and M.L. Soffa. Predicting the impact of optimizations for embedded systems. In Proceedings of LCTES 2003, pages 1--11, June 2003. Google ScholarDigital Library
Index Terms
- ACME: adaptive compilation made efficient
Recommendations
ACME: adaptive compilation made efficient
LCTES '05: Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systemsResearch over the past five years has shown significant performance improvements using a technique called adaptive compilation. An adaptive compiler uses a compile-execute-analyze feedback loop to find the combination of optimizations and parameters ...
Investigating Adaptive Compilation Using the Mipspro Compiler
Despite the astonishing increases in processor performance over the last 40 years, delivered application performance remains a critical issue for many important problems. Compilers play a critical role in determining that performance. A modern ...
Reducing virtual call overheads in a Java VM just-in-time compiler
Special issue on interaction between compilers and computer architecturesJava, an object-oriented language, uses virtual methods to support the extension and reuse of classes. Unfortunately, virtual method calls affect performance and thus require an efficient implementation, especially when just-in-time (JIT) compilation is ...
Comments