Main Page
Projet ANR TaMaDi — Dilemme du Fabricant de Tables — Table Maker's Dilemma (ref. ANR 2010 BLAN 0203 01)
Composition du projet
Équipes impliquées dans le projet/Teams involved in the project
- Arénaire (CNRS, ENS Lyon, INRIA, UCB Lyon, Université de Lyon, Laboratoire LIP), Lyon
- Marelle (INRIA), Sophia-Antipolis
- Pequan (CNRS, Université Pierre et Marie Curie, Laboratoire LIP6), Paris
Porteur du projet/Project leader
Membres du projet/Project members
Jean-Claude Bajard, Nicolas Brisebarre, Florent de Dinechin, Pierre Fortin, Mourad Gouicem, Stef Graillat, Guillaume Hanrot, Thibault Hilaire, Mioara Joldes, Christoph Lauter, Vincent Lefèvre, Erik Martin-Dorel, Micaela Mayero, Marc Mezzarobba, Jean-Michel Muller, Andy Novocin, Ioana Pasca, Laurence Rideau, Damien Stehlé, Laurent Théry, Serge Torres.
Publications du projet/Publications of the project: click here
Logiciels développés par les membres du projet/Software designed by project members: click here
Faits marquants de la vie du projet/Highlights
- Mioara Joldes a soutenu sa thèse de doctorat Approximations polynomiales rigoureuses et applications le 26 septembre 2011 à l'Ecole Normale Supérieure de Lyon
- l'article An FPGA architecture for solving the Table Maker's Dilemma, rédigé par des membres du projet, a obtenu le best paper award de la conférence IEEE ASAP 2011 (Santa Monica, USA, Sept. 2011)
- Erik Martin-Dorel a soutenu sa thèse de doctorat Contributions to the Formal Verification of Arithmetic Algorithms le 26 septembre 2012 à l'Ecole Normale Supérieure de Lyon
- Jean-Michel Muller a obtenu la médaille d'argent 2013 du CNRS
- Mourad Gouicem soutiendra sa thèse de doctorat Résolution du dilemme du fabricant de tables sur architectures parallèles le 14 octobre 2013 à l'Université Pierre et Marie Curie
- Stef Graillat soutiendra son Habilitation à Diriger des recherches Contribution à l'amélioration de la précision et à la validation des algorithmes numériques le 2 décembre 2013 à l'Université Pierre et Marie Curie
Vulgarisation/Popular science: click here
Présentation générale
En arithmétique virgule flottante (VF), avoir des opérations complètement spécifiées est une exigence-clé, si on veut développer du logiciel portable au comportement prévisible. Depuis 1985, les quatre opérations arithmétiques sont spécifiées (elles doivent être correctement arrondies: le système doit renvoyer le nombre VF le plus proche du résultat exact). Ce n'est pas tout-à-fait le cas pour les fonctions mathématiques de base: la même fonction pourra renvoyer des résultats significativement différents suivant l'environnement, avec 2 conséquences pour les logiciels utilisant ces fonctions:
- il est presque impossible d'estimer leur précision
- leur portabilité est délicate à garantir
Ce manque de spécification est dû à un problème appelé le Dilemme du fabricant de tables. Pour calculer f(x) dans un format donné, on calcule une approximation de f(x) qu'on arrondit au nombre VF le plus proche. Le problème est: quelle doit être la précision de l'approximation pour que le résultat obtenu soit toujours égal à f(x) arrondi au plus proche nombre VF? Pour résoudre ce problème, on doit déterminer, pour chaque format et fonction considérés quel est le point le plus dur à arrondir (HR-point), i.e., le nombre VF tel que f(x) est le plus proche du milieu de 2 nombres VF consécutifs. La manière naïve de résoudre ce problème (recherche exhaustive) est impraticable. Ce projet vise à fournir:
- pour les formats et fonctions les plus courants, des tables de HR-points, avec des preuves de leur correction
- du code open-source permettant de trouver les HR-points pour d'autres formats & fonctions
Obtenir ces points permettra de construire des bibliothèques de fonctions très efficaces, permettant une spécification complète des fonctions usuelles en arithmétique VF, avec des conséquences à terme sur la portabilité et la qualité des logiciels numériques.
L'état de l'art se résume comme suit:
- en 1991, IBM a lancé une bibliothèque, libultim, maintenant abandonnée, clamant être avec arrondi correct. Sans connaissance des HR- points, les concepteurs surestimaient la précision intermédiaire nécessaire, donnant ainsi de piètres performances
- l'équipe Arénaire (une des proposantes de ce projet) et l'équipe CACAO du LORIA ont conçu des algorithmes (L- algorithme et algorithme SLZ) et publié des HR-points pour quelques fonctions en double précision. La complexité de leurs méthodes est exponentielle en le nombre de bits du format: elles ne peuvent être utilisées avec des formats significativement supérieurs à la double précision.
- ces dernières années, Arénaire a développé une bibliothèque, CRLibm, qui implante les principales fonctions en faible précision. L'arrondi correct est fourni avec un surcoût négligeable. Ces performances ont conduit le comité de révision de la norme IEEE 754 à recommander (sans imposer) l'arrondi correct pour certaines fonctions mathématiques.
Le standard IEEE 754-2008 a été adopté en 2008. Nos méthodes ne peuvent être utilisées en grande précision. Et pourtant, IEEE 754-2008 spécifie des formats décimal et binaire 128 bits. de plus le processus de construction de nos HR-points est long et complexe, ce qui jette un doute sur les résultats fournis. On doit donc complètement reconsidérer les méthodes utilisées, en se focalisant sur 3 aspects:
- grosses précisions: on doit construire de nouveaux algorithmes pour les formats supérieurs à la double-précision
- preuve formelle: on doit fournir des preuves formelles des parties critiques de nos méthodes
- calcul agressif: les méthodes conçues jusqu'ici demandent des semaines de calcul sur des centaines de PC. Même si on améliore les algorithmes, pour traiter de plus gros formats on doit étudier divers moyens de massivement paralléliser les calculs On vise à des résultats pratiques: tables de HR points, programmes pour les calculer, preuves de leur correction, avec pour conséquence des librairies de fonctions plus rapides et fiables.
General overview
In floating-point (FP) arithmetic having fully-specified “atomic” operations is a key-requirement for portable, predictable and provable numerical software. Since 1985, the four arithmetic operations (+, −, ×, ÷) and the square root are IEEE specified (it is required that they should be correctly rounded: roughly speaking, the system must always return the floating-point number nearest the exact mathematical result of the operation). This is not fully the case for the basic mathematical functions (sine, cosine, exponential, etc.). Indeed, the same function, on the same variable, with the same format, may return significantly different results depending on the environment. As a consequence, numerical programs using these functions suffer from various problems. Among them:
- it is almost impossible to estimate their accuracy (since little is known about what is returned by the imple- mented mathematical functions);
- their portability is difficult to guarantee (a program which works on one system may be too inaccurate—or may even crash—on different systems).
The lack of specification (partly solved, thanks to our earlier work, in the recent IEEE 754-2008 standard for floating-point arithmetic) is due to a problem called the Table Maker’s Dilemma (TMD). To compute f(x) in a given format, where x is a FP number, we must first compute an approximation to f(x) with a given precision, which we round to the nearest FP number in the considered format. The problem is the following: finding what the accuracy of the approximation must be to ensure that the obtained result is always equal to the “exact” f(x) rounded to the nearest FP number. To solve that problem we have to locate, for each considered floating-point format and for each considered function f , the hardest to round (HR) points, that is, what is the floating-point numbers x such that f (x) is closest to the exact middle of two consecutive floating-point numbers (we call such a middle a breakpoint). The naive method of finding these points (evaluating the function with large precision at each floating-point number) is far too impractical.
The IEEE 754-2008 standard specifies, for instance a binary128 (“quad precision”) and a decimal128 (128-bit decimal) formats. Also, the processes that generate our HR cases are based on complex and very long calculations (years of cumulated CPU time) that inevitably cast some doubt on the correctness on their results. Hence, we need to fully reconsider the methods used to get HR points, and mainly focus on three aspects:
- big precisions: we must get new algorithms for dealing with precisions larger than double precision. Such precisions will become more and more important (even if double precision may be thought as more than enough for a final result, it may not be sufficient for the intermediate results of a long or critical calculations);
- formal proof: we must provide formal proofs of the critical parts of our methods. Another possibility is to have our programs generating certificates that show the validity of their results. We should then focus on proving the certificates;
- aggressive computing: the methods we have designed for generating HR points in double precision re- quire weeks of computation on hundreds of PCs. Even if we design faster algorithms, we must massively parallelize our methods, and study various ways of doing that.
Meetings of the TaMaDi project
First meeting: Paris, September 8, 2010
- Jean-Michel's slides (presenting the main aspects of the project)
- Andy's slides (overview on LLL)
Second meeting: Lyon, October 27-28, 2010
- Presentation of ANR, by Nadia Nadah
- Brief overall presentation, by Jean-Michel Muller
- SLZ for (not so) dummies, by Guillaume Hanrot
- Introduction to GPU programming, by Pierre Fortin
- Algorithms for GPUs, by Sylvain Collange
- Introduction to tasks in OpenMP, by Pierre Fortin
- “Classical” hard & soft targets for TaMaDi, by Serge Torres
- LLL for (even less) dummies, by Guillaume Hanrot
- On the formal proof of Hensel's lemma, by Erik Martin-Dorel
- Formal proof for (definitely not) dummies, by Laurent Théry
- Example of a correctly rounded function, by Christoph Lauter
- Hardest-to-round cases obtained so far, by Vincent Lefèvre
- Some possible improvements to SLZ, by Andy Novocin
- Supnorm for newbies, by Mioara Joldes
Third meeting: Sophia-Antipolis, February 22-23, 2011
- Issues, Solutions and Tools in Formal Proofs for the TMD, by Érik Martin-Dorel, Micaela Mayero, Ioana Pasca, Laurence Rideau, and Laurent Théry
- Déploiement de l'algorithme L sur GPU, premiers résultats, by Pierre Fortin, Mourad Gouicem and Stef Graillat
- Génération de coefficients de polynômes d'approximation sur des sous-intervalles avec bornes d'erreur garanties, by Vincent Lefèvre
- Implantation de SLZ, by Guillaume Hanrot
- Approches “sums of squares” et autres pour borner l’erreur d’évaluation polynomiale, by Jean-Michel Muller
Fourth meeting: Coqapprox meeting, Lyon, June 14-15, 2011
- Un survol autour de l'approximation polynomiale rigoureuse - une petite introduction aux fonctions D-finies (structures de données, calcul de séries de Taylor ou de Chebyshev, problèmes numériques), by Nicolas Brisebarre
- État de l'art sur la preuve formelle de modèles de Taylor (travaux de Roland Zumkeller, thèse de Francisco Chaves, travail de Milad Niqui, etc), by Micaela Mayero
- Implantation de modèles de Taylor en Coq, by Érik Martin-Dorel
- Une présentation de Coq.Interval, by Guillaume Melquiond
- Choix de la bibliothèque : pourquoi Coq.Interval ?, by Ioana Paşca
- Performance et fiabilité du calcul en Coq, by Laurent Théry
Fifth meeting: General meeting, Lyon, December 12-14, 2011
- Une nouvelle interface pour la bibliothèque Sollya, by Christoph Lauter
- Hierarchical Polynomial Approximation, by Vincent Lefèvre
- Towards Solving the Table Maker's Dilemma on GPU, by Mourad Gouicem
- A new LSG test minimizing divergence on SIMD architectures, by Pierre Fortin, Mourad Gouicem and Stef Graillat
- Coq-Approx: Computation and Benches, by Laurence Rideau
- le projet DDMF, par Marc Mezzarobba
- An FPGA algorithm for the TMD, by Florent de Dinechin
- Discussion autour de l'algorithme SLZ, animée par Guillaume Hanrot
Sixth meeting: Coqapprox meeting, Lyon, July 11-12, 2012
- Preuves formelles en Coq pour les modèles de Taylor: état actuel de la formalisation et travaux futurs, by Ioana Pasca and Erik Martin-Dorel
- Improving Real Analysis in Coq: a User-Friendly Approach to Integrals and Deivatives, by Catherine Lelay (Proval team, Saclay)
- Certification of inequalities involving transcendental functions using semi-definite programming, by Victor Magron
- Validation via des opérateurs de point fixe, by Marc Mezzarobba (LIP/Arénaire)
- Vers une formalisation du DDMF, by Assia Mahboubi
- discussion autour du thème "Calculer en Coq avec divers niceaux de sécurité, du calcul symbolique au calcul prouvé formellement"
- discussion sur l'orientation du code Coq (discussion spécifique au travail sur CoqApprox : séries de polynômes orthogonaux, ajout de fonctions, NaN et intervalles, récurrences, ...).
Seventh meeting: General meeting, Paris, October 18-19, 2012
- Pierre Fortin, "Résolution du dilemme du fabricant de tables sur CPU"
- Erik Martin-Dorel, bilan de l'implantation de Coqapprox.
- Jacques Laskar, "présentation de besoins et solutions en calcul haute précision "
- Mioara Joldes, "bibliothèque multiprécision sur GPU"
- Erik Martin-Dorel, "retour d'expérience sur l'utilisation de PVS à la NASA"
- Mourad Gouicem, Correctly rounding elementary functions on GPU.
- Mourad Gouicem, "Multiplication modulaire et fractions continues"
- Vincent Lefèvre, Discussion sur la découpe en intervalles.
Eighth meeting: Coqapprox meeting, Lyon, July 16, 2013
- Érik Martin-Dorel, Advances in the Formalisation of Univariate Taylor Models in COQ.
- Laurent Théry, Vers une formalisation du L-algo en Coq.
- Érik Martin-Dorel, Towards Formally Verified Global Optimisation in COQ.
- Guillaume Melquiond, What is in store for Coq.Interval
Final meeting, Lyon, October 7-8, 2013
- Mourad Gouicem, Résolution du dilemme du fabricant de tables sur architectures parallèles
- Sylvie Boldo, Calculer la surface d'un triangle
- Guillaume Hanrot, L'algorithme SLZ pour de grandes valeurs de p
- Pierre Fortin, Solving the TMD on Multi-Core CPUs and on the Xeon Phi
- Erik Martin Dorel, Bilan de la partie Coqapprox
- Guillaume Melquiond, Un compilateur vérifié formellement supportant les flottants
- Vincent Lefèvre, Points sur les pires cas obtenus jusqu'ici
- Florent de Dinechin, Présentation du projet Métalibm
- Erik Martin-Dorel, CoqHensel: du lemme de Hensel à la vérification de certificats ISValP en Coq
- Nicolas Brisebarre, Quelques pistes pour le futur
Et l'après TaMaDi ?
Documentation
Download the submitted project
Public documentation on the Table Maker's Dilema
Private documentation (for project members only)
Nous utilisons wikimedia: un peu d'aide ? un peu d'aide