Contexte :
Avec la complexité des
architectures actuelles des processeurs, il est devenu quasiment
impossible de savoir quelles optimisations, et quels enchaînements
d'optimisations, fourniront le code le plus rapide. Une méthode
"primaire" consiste à tester toutes les combinaisons possibles afin
d'identifier la meilleure. D'autres approches tentent d'atteindre la
meilleure combinaison via des stratégies évolutionnaires. C'est le cas
de la méthode utilisée par l'outil de compilation
Acovea. Cet outil se destine à trouver la meilleure combinaison d'options de compilation, produisant le code binaire le plus rapide.
Travail à effectuer :
- Étude détaillée de l'outil Acovea :
- comment fonctionne-t-il ?
- quel est l'algorithme évolutionnaire implémenté ?
- avantages
et inconvénients ? Acovea trouve-t-il toujours la meilleure version de
code, indépendamment du compilateur ou des données d'entrée du
programme optimisé ?
- Application d'Acovea aux programmes du banc d'essai SPEC2006 :
- Ecriture de scripts de lancement
- Etude de l'impact en performances d'Acovea, avec les compilateurs gcc et icc.
- Etude de l'indépendance par rapport aux entrées.
Compétences requises :
langages C/C++/shell scripts, linux, gout pour la compilation et l'optimisation de programmes.
Encadrement :
Philippe Clauss
Prendre contact avec Philippe Clauss (clauss@icps.u-strasbg.fr)
sujets de
projets