Using Machine Learning to Automate Compiler Optimisation
View/ Open
Date
2009Author
Thomson, John D
Metadata
Abstract
Many optimisations in modern compilers have been traditionally based around using
analysis to examine certain aspects of the code; the compiler heuristics then make a
decision based on this information as to what to optimise, where to optimise and to
what extent to optimise. The exact contents of these heuristics have been carefully
tuned by experts, using their experience, as well as analytical tools, to produce solid
performance.
This work proposes an alternative approach – that of using proper statistical analysis to
drive these optimisation goals instead of human intuition, through the use of machine
learning.
This work shows how, by using a probabilistic search of the optimisation space, we can
achieve a significant speedup over the baseline compiler with the highest optimisation
settings, on a number of different processor architectures.
Additionally, there follows a further methodology for speeding up this search by being
able to transfer our knowledge of one program to another. This thesis shows that,
as is the case in many other domains, programs can be successfully represented by
program features, which can then be used to gauge their similarity and thus the applicability
of previously learned off-line knowledge. Employing this method, we are able
to gain the same results in terms of performance, reducing the time taken by an order
of magnitude.
Finally, it is demonstrated how statistical analysis of programs allows us to learn additional
important optimisation information, purely by examining the features alone. By
incorporating this additional information into our model, we show how good results
can be achieved in just one compilation.
This work is tested on real hardware, for both the embedded and general purpose domain,
showing its wide applicability.