Environnements de développement pour architectures hautes
performances
Mots clés : optimisations de code,
parallélisme, "tuning" d'applications, systèmes embarqués,
VLIW .
Résumé :
Exploiter efficacement un système dépend fortement des
environnements de programmation. Il s'agit, entre autres,
de mettre en oeuvre des techniques de génération et
d'optimisation de code qui cachent à l'utilisateur la
complexité matérielles. Les systèmes visés sont fondés sur
des processeurs superscalaires ou VLIW.
Les actions de recherches que nous menons visent à
fournir aux utilisateurs des outils tels que
compilateurs/optimiseurs et des outils de "tuning"
interactifs pour les applications nécessitant des calculs
intensifs. Dans le cadre des applications embarquées, il
faut de plus que les techniques développées prennent en
compte des contraintes globales telles que la taille du
code, la consommation d'énergie.
Pour permettre une expérimentation en grandeur réelle
nous développons des infrastructures de compilation et de
simulation.
Nos études abordent le problème de la
génération/optimisation de code pour systèmes haute
performance, fondés sur des processeurs superscalaires ou
VLIW, suivant deux approches complémentaires.
La première consiste à définir des stratégies de
compilation qui combinent efficacement les méthodes de
transformations de code tout en prenant en compte des
contraintes globales telles la taille du code, la
consommation d'énergie etc. Par exemple, nous explorons les
techniques de compilation itérative qui traitent de la boucle
de rétroaction dans les compilateurs et permettent ainsi de
mieux combiner les optimisations intervenant à différents
niveaux dans les compilateurs (code source et code machine
entres autres).
La seconde problématique que nous abordons traite de la
capitalisation et de la réutilisation guidée d'expertise des
utilisateurs dans les environnements de "tuning" de codes. En
particulier, nous étudions l'utilisation des techniques de
raisonnement à partir de cas pour la sélection des techniques
d'optimisation et le diagnostique des codes en regard des
aspects performances.
Ces études sont accompagnées par des recherches sur les
infrastructures de compilation et de simulation de jeux
d'instructions. Outre l'intérêt propre de ces
infrastructures, elles sont nécessaires à la validation des
techniques d'optimisation et de "tuning" développées. Parmi
les infrastructures déjà mises en oeuvre on peut citer
TSF[9], un outil de transformation de codes
Fortran sur architectures hautes performances et
SALTO un environnement de manipulation de
langage d'assemblage [10].