Rapidly Selecting Good Compiler Optimizations Using Performance Counters

John Cavazos, Grigori Fursin, Felix Agakov, Edwin V. Bonilla, Michael O'Boyle, Olivier Temam

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Applying the right compiler optimizations to a particular program can have a significant impact on program performance. Due to the non-linear interaction of compiler optimizations, however, determining the best setting is nontrivial. There have been several proposed techniques that search the space of compiler options to find good solutions; however such approaches can be expensive. This paper proposes a different approach using performance counters as a means of determining good compiler optimization settings. This is achieved by learning a model off-line which can then be used to determine good settings for any new program. We show that such an approach outperforms the state-of the- art and is two orders of magnitude faster on average. Furthermore, we show that our performance counter-based approach outperforms techniques based on static code features. Using our technique we achieve a 17% improvement over the highest optimization setting of the commercial PathScale EKOPath 2.3.1 optimizing compiler on the SPEC benchmark suite on a recent AMD Athlon 64 3700+ platform.
Original languageEnglish
Title of host publicationCode Generation and Optimization, 2007. CGO '07. International Symposium on
Place of PublicationWashington, DC, USA
PublisherInstitute of Electrical and Electronics Engineers (IEEE)
Pages185-197
Number of pages13
ISBN (Print)0-7695-2764-7
DOIs
Publication statusPublished - Mar 2007

Cite this