Habilitation à diriger des recherches
Equipe : Architectures parallèles
Contributions à l'optimisation des programmes de haut niveau
Début le 01/01/1970
Direction :
Ecole doctorale : ED STIC 580
Etablissement d'inscription : Université Paris-Saclay
Lieu de déroulement : LRI-ARCHI
Soutenue le 12/12/2012 devant le jury composé de :
François Bodin, CAPS Entreprise, Rapporteur
François Irigoin, Mines ParisTech, Rapporteur
Sanjay Rajopadhye, Colorado State University, Rapporteur
Pierre Boulet, Université de Lille, Examinateur
Philippe Clauss, Université de Strasbourg, Examinateur
Albert Cohen, INRIA Rocquencourt, Examinateur
Daniel Étiemble, Université Paris-Sud, Examinateur
Activités de recherche :
Résumé :
Le temps où la technologie permettait l'amélioration des
performances des programmes mécaniquement, au travers de
l'augmentation en fréquence des processeurs, est révolu depuis
plusieurs années. La technologie actuelle des transistors atteint ses
limites physiques, rendant plus difficile la miniaturisation d'un
transistor sans fuite de courant électrique et par conséquent sans
instabilité du circuit. La réponse des architectes à cette crise
technologique a été de placer plusieurs coeurs sur une même puce.
Cette solution permet de mettre toujours plus de transistors par unité
de surface et d'augmenter la performance crête théorique, sans
nécessiter l'augmentation de la fréquence d'horloge. Mais le prix à
payer pour tirer parti de ces architectures est la réécriture des
applications. Et ce prix est aujourd'hui exorbitant.
Durant cette présentation, nous détaillerons notre angle d'attaque
pour permettre aux développeurs d'application de tirer parti des
architectures modernes sans sacrifier leur productivité : celui de
la compilation dite de haut niveau. Nous montrerons comment les
programmes peuvent être manipulés efficacement au travers d'une
représentation mathématique appelée modèle polyédrique. Nous
présenterons nos contributions et la progression de ce modèle vers
un tel niveau de maturité qu'il est aujourd'hui utilisé dans plusieurs
compilateurs de production, tels que GCC, LLVM ou IBM XL. Nous
décrirons nos différentes stratégies et extensions pour rendre ce
modèle toujours plus efficace dans toujours plus de cas. Enfin, nous
esquisserons plusieurs perspectives de recherche pour la compilation
de haut niveau.