CGO '08 Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
compiler optimizations impact on code quality, compilation time, code size, energy consumption.
standard optimization levels: -o1 -o2 -o3 -os
Pareto optimal optimization levels
multi-objective evolutionary searching experimental results 实验结果
Our experimental results using GCC and the SPEC CPU benchmarks show that the automatic construction of optimization levels is feasible in practice, and in addition, yields better optimization levels than GCC’s manually derived (-Os, -O1, -O2 and -O3) optimization levels
The effect of a compiler optimization is highly dependent on the code being compiled.
Static compilers as well as dynamic compilers typically come with a number of optimization levels such as -O1, -O2, -O3 and -Os, which provide different trade-offs between code quality, compilation time and code size. Constructing these optimization levels typically is a manual process which is both tedious and time consuming. Identifying an appro- priate set of optimization levels is particularly challenging because the search space is huge — for example, the de- sign space in our setup counts in the order of 1018 candidate optimization levels. This paper presented COLE, Compiler Optimization Level Exploration, which employs a multi-objective evolutionary algorithm to find Pareto optimal optimization levels. COLE is fully automated and is completely transparent to the com- piler, the benchmarks, the hardware platform, as well as the objective functions. To the best of our knowledge, this pa- per is the first to study automated multi-objective compiler optimization exploration. COLE differs from iterative com- pilation in this respect because the work done so far in iter- ative compilation focused on single-objective optimization. Our experiments using GCC and the SPEC CPU bench- marks on an Intel Pentium 4 machine optimizing for run time (code quality) and compilation time show that the op- timization levels obtained through COLE significantly out- perform the standard (and manually derived) compiler opti- mization levels (-O1, -O2, -O3), and in addition, outperform the optimization levels obtained through random sampling.