Meta optimization
- 9 May 2003
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 38 (5) , 77-90
- https://doi.org/10.1145/780822.781141
Abstract
Compiler writers have crafted many heuristics over the years to approximately solve NP-hard problems efficiently. Finding a heuristic that performs well on a broad range of applications is a tedious and difficult process. This paper introduces Meta Optimization, a methodology for automatically fine-tuning compiler heuristics. Meta Optimization uses machine-learning techniques to automatically search the space of compiler heuristics. Our techniques reduce compiler design complexity by relieving compiler writers of the tedium of heuristic tuning. Our machine-learning system uses an evolutionary algorithm to automatically find effective compiler heuristics. We present promising experimental results. In one mode of operation Meta Optimization creates application-specific heuristics which often result in impressive speedups. For hyperblock formation, one optimization we present in this paper, we obtain an average speedup of 23% (up to 73%) for the applications in our suite. Furthermore, by evolving a compiler's heuristic over several benchmarks, we can create effective, general-purpose heuristics. The best general-purpose heuristic our system found for hyperblock formation improved performance by an average of 25% on our training set, and 9% on a completely unrelated test set. We demonstrate the efficacy of our techniques on three different optimizations in this paper: hyperblock formation, register allocation, and data prefetching.This publication has 8 references indexed in Scilit:
- Optimizing for reduced code space using genetic algorithmsPublished by Association for Computing Machinery (ACM) ,1999
- Depth-fair crossover in genetic programmingPublished by Association for Computing Machinery (ACM) ,1999
- Evidence-based static branch prediction using machine learningACM Transactions on Programming Languages and Systems, 1997
- The importance of prepass code scheduling for superscalar and superpipelined processorsIEEE Transactions on Computers, 1995
- Iterative modulo schedulingPublished by Association for Computing Machinery (ACM) ,1994
- The priority-based coloring approach to register allocationACM Transactions on Programming Languages and Systems, 1990
- Spill code minimization techniques for optimizing compliersPublished by Association for Computing Machinery (ACM) ,1989
- Efficient instruction scheduling for a pipelined architecturePublished by Association for Computing Machinery (ACM) ,1986