Hybrid optimizations: which optimization algorithm to use?

  • Authors:
  • John Cavazos;J. Eliot B. Moss;Michael F. P. O'Boyle

  • Affiliations:
  • Member of HiPEAC, Institute for Computing Systems Architecture (ICSA), School of Informatics, University of Edinburgh, Edinburgh, UK;Department of Computer Science, University of Massachusetts, Amherst, MA;Member of HiPEAC, Institute for Computing Systems Architecture (ICSA), School of Informatics, University of Edinburgh, Edinburgh, UK

  • Venue:
  • CC'06 Proceedings of the 15th international conference on Compiler Construction
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

We introduce a new class of compiler heuristics: hybrid optimizations. Hybrid optimizations choose dynamically at compile time which optimization algorithm to apply from a set of different algorithms that implement the same optimization. They use a heuristic to predict the most appropriate algorithm for each piece of code being optimized. Specifically, we construct a hybrid register allocator that chooses between linear scan and graph coloring register allocation. Linear scan is more efficient, but sometimes less effective; graph coloring is generally more expensive, but sometimes more effective. Our setting is Java JIT compilation, which makes optimization algorithm efficiency particularly important. Our hybrid allocator decides, based on features of a method, which algorithm to apply to that method. We used supervised learning to induce the decision heuristic. We evalute our technique within Jikes RVM [1] and show on average it outperforms graph coloring by 9% and linear scan by 3% for a typical compilation scenario. To our knowledge, this is the first time anyone has used heuristics induced by machine learning to select between different optimization algorithms.