Thèse soutenue

Code specialization strategies for high performance architectures

EN
Auteur / Autrice : Minhaj Ahmad Khan
Direction : William Jalby
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2008
Etablissement(s) : Versailles-St Quentin en Yvelines

Résumé

FR  |  
EN

De nombreuses applications sont incapables d'utiliser les performances crêtes offertes par des architectures modernes comme l'Itanium et Pentium-IV. Cela rend critique les optimisations de code réalisée par les compilateurs. Parmis toutes les optimisations réalisées par les compilateurs, la spécialisation de code, qui fournit aux compilateurs les valeurs des paramètres importants dans le code, est très efficace. La spécialisation statique a comme défault de produire une grande taille du code, appelée, l'explosion du code. Cette grande taille implique des défaults de caches et des coûts de branchements. Elle même impose des contraintes sur d'autres optimisations. Tous ces effets rendent nécessaire de spécialiser le code dynamiquement. La spécialisation de code est donc effectué par lescompilateurs/specialiseurs dynamiques, qui générent le code àl'exécution. Ces approches ne sont pas toujours bénéfique puisque l'exécution doit subir un grand surcoût de géneration à l'exécution qui peut détériorer la performance. De plus, afin d'être amorti, ce coût exige plusieurs invocations du même code. Visant à améliorer les performances des applications complexes, cettethèse propose différentes stratégies pour la spécialisation du code. En utilisant la compilation statique, dynamique et itérative, nous ciblons les problèmes d'explosion de la taille du code et le surcoût en temps induit par la génération du code à l'exécution. Notre ''Spécialisation Hybride'' génère des versions équivalentes du code après l'avoir specialisé statiquement. Au lieu de conserver toutes les versions, l'une de ces versions peut être utilisée comme un template dont les instructions sont modifiées pendant exécution afin d'être adaptée à d'autres versions. La performance est améliorée puisque le code est spécialisé au moment de la compilation statique. La spécialisation dynamique est donc limitée à la modification d'un petit nombre d'instructions. Différentes variantes de ces approches peuvent améliorer laspécialisation en choisissant des variables adéquates, en diminuant le nombre de compilations et en réduisant la fréquence de laspécialisation dynamique. Notre approche ''Spécialisation Itérative'' est en mesure d'optimiser les codes régulier en obtenant plusieurs classes optimales du code spécialisé au moment de la compilation statique. En suite, une transformation itérative est appliquée sur le code afin de bénéficier des classes optimales générées et obtenir la meilleure version. Les expérimentations ont été effectuées sur des architectures IA-64 et Pentium- IV, en utilisant les compilateurs gcc et icc. Les approches proposées (Spécialisation Hybride et Itérative), nous permettent d'obtenir une amélioration significative pour plusieurs benchmarks, y compris ceux de SPEC, FFTW et ATLAS.