vers la spécialisation automatique de bibliothèques

Transcription

vers la spécialisation automatique de bibliothèques
Synthèse de logiciel arithmétique pour processeurs STMicroelectronics :
vers la spécialisation automatique de bibliothèques mathématiques
Sujet de thèse CIFRE
Compilation Expertise Center (STS/CEC), STMicroelectronics Grenoble
MathIF, École doctorale de mathématiques et informatique fondamentale de Lyon
LIP, Laboratoire de l’Informatique du Parallélisme, Équipe-projet Arénaire
Localisation : STMicroelectronics Grenoble et École Normale Supérieure de Lyon
Directeurs de thèse : Claude-Pierre Jeannerod (CR INRIA, LIP, ÉNS Lyon)
Christophe Monat (Ingénieur STMicroelectronics, STS/CEC, Grenoble)
Jean-Michel Muller (DR CNRS, LIP, ÉNS Lyon)
Description du projet
Les applications embarquées sur les SOCs (Sytems On Chips) de STMicroelectronics comportent des
parts importantes d’algorithmes de traitement du signal, nécessitant parfois de façon critique l’évaluation
intensive de fonctions mathématiques de base (opérateurs de type fused multiply-add (FMA), division,
racines k-ièmes, normes euclidiennes, exp, log, fonctions trigonométriques, ...).
L’évaluation efficace de ces fonctions est pour l’ingénieur une source réelle de difficultés. En effet, dans
les chaînes d’outils de génération de code classiques (compilateurs C et C++), cette évaluation est effectuée
par une bibliothèque totalement générale, loin du meilleur compromis précision/efficacité. Les algorithmes
implantés sont valides sur un large domaine d’entrée, ce qui nécessite des étapes de réduction difficiles et
coûteuses, alors que ce domaine est souvent réduit dans le contexte de l’application. Ensuite ces bibliothèques
donnent un résultat dont la précision est parfois inutilement grande par rapport à son utilisation réelle. Enfin,
les implantations des fonctions sont écrites en C de façon très générale et ne prennent pas en compte à haut
niveau les spécificités de l’architecture (parallélisme d’instructions par exemple), menant à des algorithmes
d’évaluation n’utilisant pas toutes les ressources de la cible.
Par ailleurs, l’équipe Arénaire travaille depuis plusieurs années à la spécification et au développement de
techniques et d’outils logiciels permettant d’assister l’ingénieur dans la conception de bibliothèques arithmétiques généralistes validées. L’objectif, à terme, est de permettre d’écrire plus vite des codes numériques
plus fiables (car assortis de bornes d’erreurs validées). Ce travail est l’objet de recherches très actives dans
Arénaire, à la frontière entre l’arithmétique des ordinateurs (flottants, intervalles, précision arbitraire), la
théorie de l’approximation, l’algorithmique numérique, l’analyse d’erreur et la synthèse de code. Cependant le savoir-faire et les technologies dont nous disposons aujourd’hui restent peu adaptés au contexte de
STMicroelectronics décrit ci-dessus : l’architecture cible et les contraintes liées à l’application sont insuffisamment prises en compte ; l’écriture des codes n’est que semi-automatique (si certaines portions de code
sont calculées et validées automatiquement, d’autres sont écrites et vérifiées entièrement à la main) ; enfin, les
heuristiques de génération de code implantées actuellement peuvent se révéler trop lentes pour être intégrées
à un compilateur.
Le sujet de thèse s’inscrit dans ce contexte : il s’agit de répondre au besoin de spécialisation d’une
partie des solutions d’Arénaire à la problématique de STMicroelectronics ; cela demande un travail de fond
permettant d’adapter et d’améliorer ces solutions. En particulier, les objectifs visés sont :
– identifier et modéliser les spécificités des architectures VLIW ST200 et ARM les plus pertinentes du
point de vue arithmétique ;
– implanter la détection, dans les codes applicatifs, des fonctions mathématiques critiques ;
– concevoir et implanter de nouveaux algorithmes et de nouvelles heuristiques permettant d’accélérer le
calcul de programmes d’évaluation très efficaces et suffisamment précis ;
1
– chercher à automatiser, au moins partiellement, le calcul des portions de code les moins linéaires
(réduction d’argument, gestion des exceptions, ...).
Après une étude approfondie de la littérature et des outils existants, l’étudiant se concentrera sur l’optimisation des fonctions de type FMA, majoritairement présentes dans de nombreux codes numériques. Les
autres fonctions mathématiques seront étudiées dans un deuxième temps, en fonction des besoins applicatifs.
Il est à noter que le couplage automatique des outils de compilation aux outils de génération de code
présente une difficulté majeure, liée au calcul des domaines d’entrée et de précision de sortie requises. Si des
travaux existent dans le domaine de l’interprétation abstraite pour définir des domaines abstraits efficaces
pouvant mener à calculer ces paramètres, ils ne sont pas maîtrisés par nos équipes. On se limitera a priori à
un couplage des outils de génération de bibliothèques mathématiques et du compilateur par des annotations
utilisateur affirmant des propriétés utiles au générateur.
Les retombées attendues sont une méthodologie et des outils efficaces de génération de codes d’évaluation
de fonctions mathématiques de base, optimisés en fonction de l’architecture et de l’application.
Cette méthodologie sera directement utile aux ingénieurs développant des applications. Par leur intégration éventuelle aux outils de compilation produits par STMicroelectronics Compilation Expertise Center, ces
outils pourront faire progresser significativement la fiabilité des codes et la productivité des développeurs.
Bibliographie
S. Boldo, and J.-C. Filliâtre. Formal verification of floating-point programs. 18th IEEE Symp. Comp. Arith., 187-194, 2007.
S. Chevillard, and C. Lauter. A certified infinite norm for the implementation of elementary functions. QSIC 2007 (Seventh
International Conference on Quality Software), 2007.
M. Ercegovac, and T. Lang. Digital Arithmetic. Morgan Kaufmann, 2004
J. A. Fisher, P. Faraboschi, and C. Young. Embedded Computing : a VLIW Approach to Architecture, Compilers and Tools.
Morgan Kaufmann, 2004
Gappa : http://lipforge.ens-lyon.fr/www/gappa/
J.-M. Muller. Elementary Functions, Algorithms and Implementation. Birkhäuser, 2006.
Sollya : http://sollya.gforge.inria.fr/
2