INS - Ingénierie Numérique et Sécurité 2013

Générateurs de code pour les fonctions mathématiques et les filtres – MetaLibm

Résumé de soumission

Ce projet s'attaque d'abord à l'implémentation des fonctions élémentaires (exponentielle, logarithme, fonctions trigonométriques). La bibliothèque mathématique standard (libm) offre un petit nombre de telles fonctions, pour un petit choix de précisions. Sa performance est critique pour un grand nombre d'applications, en particulier dans les domaines scientifique et financier. C'est pourquoi une attention spéciale a toujours été portée à son implémentation. Par exemple, les fabricants de processeurs ont des équipes chargées d'optimiser la libm pour chaque nouveau processeur. C'est une tâche lourde, répétitive, et sujette à erreurs.
Le premier objectif de ce projet est donc d'automatiser l'implémentation de fonctions de libm, avec l'ambition de produire automatiquement, en une fraction du temps de développement manuel, des fonctions dont la performance se compare avec celle des implémentations manuelles, et ce pour un large éventail de technologies cibles: processeurs généralistes, calculateurs embarqués, unités graphiques (GPU), et même circuits reconfigurables (FPGA) ou pas.

Les applications ont souvent besoin de fonctions qui ne sont pas présentes dans la libm. Pour ces fonctions, une composition de fonctions de libm peut s'avérer très inefficace, voire tout simplement impossible (fonction définie par une équation différentielle ou par interpolation d'un ensemble de points expérimentaux par exemple). Même les fonctions de la libm n'y sont présentes que dans un choix limité d'implémentations. Le plus souvent, cette offre ne correspond pas aux besoins précis de l'application en termes de domaine de définition, de précision, de performance ou de consommation de ressources.
Le second objectif de ce projet est donc d'ouvrir l'ensemble des fonctions et des contextes offerts aux programmeurs. Ce progrès qualitatif sera une conséquence de l'automatisation précédente: il s'agit de distribuer des outils qui, à partir de la spécification d'une fonction et des contraintes de son contexte applicatif, produiront un code optimisé l'implémentant. La qualité numérique de ce code devra être garantie par construction, puisqu'il sera impossible de tester a priori un ensemble désormais infini d'implémentations possibles.

L'implémentation d'une fonction mathématique en un programme est un processus en plusieurs étapes, typiquement réduction d'argument, approximation, évaluation. Dans les communautés traitement du signal et contrôle/commande, un processus similaire, passant par les mêmes étapes, consiste à implémenter un filtre numérique à partir de sa spécification mathématique. Dans les deux cas, le code ou circuit obtenu se compose des mêmes primitives (additions, multiplications, et valeurs constantes précalculées).
Le troisième objectif de ce projet est donc d'unifier la compréhension des processus d'implémentation d'une fonction d'une part, et d'un filtre d'autre part, dans un même cadre mathématique, conceptuel, méthodologique et applicatif. En particulier, il s'agira d'obtenir des outils capables d'implémenter des filtres pour le même éventail de cibles et avec les mêmes garanties en terme de qualité numérique.

Pour atteindre ces trois objectifs, la méthode sera de rechercher
- la formalisation du processus d'implémentation dans son ensemble, pour la traduire algorithmiquement,
- une ouverture aussi large que possible des technologies cibles,
- la motivation et la validation par des études de cas concrètes, apportées par les partenaires du projet et au delà,
- le développement open-source de génerateurs de code+preuve.

Le consortium proposé (INRIA/AriC, UPMC/LIP6, LIRMM, Kalray, CERN) rassemble, autour de spécialistes mondiaux des fonctions élémentaires, des expertises qui couvrent les filtres, l'éventail de cibles technologiques, et des applications scientifiques et industrielles.

Coordination du projet

Florent DUPONT DE DINECHIN (Centre de Recherche Inria Grenoble Rhone-Alpes)

L'auteur de ce résumé est le coordinateur du projet, qui est responsable du contenu de ce résumé. L'ANR décline par conséquent toute responsabilité quant à son contenu.

Partenariat

LIRMM/DALI Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier, équipe DALI
UPMC/LIP6 Université Marie et Pierre Curie Paris 6, Laboratoire d'Informatique de Paris 6, équipe PEQUAN
Inria / SOCRATE Centre de Recherche Inria Grenoble Rhone-Alpes

Aide de l'ANR 622 779 euros
Début et durée du projet scientifique : décembre 2013 - 48 Mois

Liens utiles

Explorez notre base de projets financés

 

 

L’ANR met à disposition ses jeux de données sur les projets, cliquez ici pour en savoir plus.

Inscrivez-vous à notre newsletter
pour recevoir nos actualités
S'inscrire à notre newsletter