Smart selection of optimizations in dynamic compilers - Martins do Rosário, V.; Silva, A. F. Da; Camacho, T. A. S.; Breternitz, M.; Borin, E.; napoli, O. O. (Concurrency and Computation: Practice and Experience, 2021)
Dynamic compilers perform compilation and generation of target code during runtime, implying that the compilation time is added into the program runtime. Thus, to build a high-performing dynamic compilation system, it is crucial to be able to generate high-quality code and, at the same time, have a small compilation cost. In this article, we present an approach that uses machine learning to select sequences of optimization for dynamic compilation that considers both code quality and compilation overhead. Our approach starts by training a model, offline, with a knowledge bank of those sequences with low overhead and high-quality code generation capability using a genetic heuristic. Then, this bank is used to guide the smart selection of optimizations sequences for the compilation of code fragments during the emulation of an application. We evaluate the proposed strategy in two LLVM-based dynamic binary translators, namely OI-DBT and HQEMU, and show that these two translators can achieve average speedups of 1.26x and 1.15x in MiBench and Spec Cpu benchmarks, respectively.