thesis

Une approche holistique pour la prédiction des optimisations du compilateur par apprentissage automatique

Defense date:

Jan. 1, 2013

Edit

Disciplines:

Directors:

Abstract EN:

Effective compiler optimizations can greatly improve applications performance. These optimizations are numerous and can be applied in any order. Compilers select these optimizations using solutions driven by heuristics which may degrade programs performance. Therefore, developers resort to the tedious manual search for the best optimizations. Combinatorial search space makes this effort intractable and one can easily fall into a local minimum and miss the best combination. This thesis develops a holistic approach to improve applications performance with compiler optimizations and machine learning. A combination of static loop analysis and statistical learning is used to analyze a large corpus of loops and reveal good potential for compiler optimizations. Milepost GCC, a machine-learning based compiler, is applied to optimize benchmarks and an industrial database application. It uses function level static features and classification algorithms to predict a good sequence of optimizations. While Milepost GCC can mispredict the best optimizations, in general it obtains considerable speedups and outperforms state-of-the-art compiler heuristics. The culmination of this thesis is the ULM meta-optimization framework. ULM characterizes applications at different levels with static code features and hardware performance counters and finds the most important combination of program features. By selecting among three classification algorithms and tuning their parameters, ULM builds a sophisticated predictor that can outperform existing solutions. As a result, the ULM framework predicted correctly the best sequence of optimizations sequence in 92% of cases.

Abstract FR:

Un choix efficace des optimisations de compilation améliore notablement la performances des applications. En raison du grand nombre de choix possibles une approche exhaustive est irréalisable et l'exploration peut facilement tomber dans un minimum local. Les compilateurs utilisent des heuristiques qui parfois dégradent la performance, ce qui contraint les utilisateurs à des ajustements manuels. Cette thèse propose une approche holistique basée sur l'apprentissage automatique pour améliorer la sélection des optimisations du compilateur. L'analyse statique d'un grand nombre de boucles permet de montrer l'existence d'un potentiel d'optimisation significatif. On applique ensuite Milepost GCC, un compilateur basé sur l'apprentissage automatique, pour optimiser différentes applications. Il utilise les caractéristiques statiques des fonctions et un algorithme de classification, pour prédire une bonne séquence d'optimisations. Milepost apporte une accélération significative qui surpasse les solutions existantes. La contribution majeure de cette thèse est une méthode de méta-optimisation, ULM. Elle exploite des données statiques et dynamiques afin de déterminer les meilleurs jeux d'apprentissage pour différent algorithmes de classification. En mettant plusieurs algorithmes en compétition, ULM construit un prédicteur plus efficace que les solutions existantes. ULM prédit dans 92% des cas étudiés la meilleure combinaison d'optimisations.