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