Exposé PDF
Transcription
Exposé PDF
Pas d’arithmétique fiable sans accès fiable au mode d’arrondi Christoph Lauter & Valérie Ménissier-Morain Université Pierre et Marie Curie - Paris 6 LIP6 - Département CALSCI RAIM 2012 Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 1/9 Pouvoir choisir le mode d’arrondi est nécessaire Arithmétique d’intervalles Utilise massivement les arrondis dirigés. Par exemple [a, b] + [c, d] = [5(a + b), 4(c + d)]. Arithmétique compensée La plupart des algorithmes nécessitent de travailler en arrondi au plus près. CADNA Le principe même de la méthode CESTAC à la base du logiciel CADNA est d’exécuter plusieurs fois une instruction avec des modes d’arrondi différents pour en déterminer la stabilité. Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 2/9 À quoi ressemble un logiciel numérique typique Un logiciel numérique est bien souvent un enchevêtrement de code utilisant divers logiciels ou langages : Sage Versoft Mathematica GAP Maple Magma Matlab MPC MPFI Linbox IntLab Implémentation BLAS/LAPACK Calcul symbolique-numérique MKL Éventuellement pour MPFR NTL BLAS/LAPACK/ScaLAPACK certaines fonctionnalités Systématique pour GMP C/C++/Fortran certaines fonctionnalités Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 3/9 À quoi ressemble un logiciel numérique typique Un logiciel numérique est bien souvent un enchevêtrement de code utilisant divers logiciels ou langages : Sage Versoft Mathematica GAP Maple Magma Matlab MPC MPFI Linbox IntLab Implémentation BLAS/LAPACK Calcul symbolique-numérique MKL Éventuellement pour MPFR NTL BLAS/LAPACK/ScaLAPACK certaines fonctionnalités Systématique pour GMP C/C++/Fortran certaines fonctionnalités Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 3/9 MKL La plupart de ces logiciels utilisent MKL (Intel Math Kernel Library) sans que l’utilisateur en ait conscience Points forts I Implémentation la plus efficace de BLAS, LAPACK, ScaLAPACK1 I Solver de systèmes peu denses I FFT I Fonctions élémentaires vectorisées I Parallélisation automatique (multi-threadé, clustering) I Interface C et Fortran I Redistribuable gratuitement (malheureusement vu comme une boı̂te noire) Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 4/9 Des opérations de base au calcul vectoriel Calcul vectoriel : utiliser MKL pour bénéficier de ses algorithmes optimisés. MKL ne permet pas de modifier le mode d’arrondi On voudrait set roundingmode ... call MKL set roundingmode ... et dans MKL grâce à un raisonnement de haut niveau, retrouver par exemple pour un calcul de matrice A = (Aij ) un résultat ([5(Aij ), 4(Aij )]). Des astuces telles que celles pour éviter les changements de mode d’arrondi dans l’arithmétique de base sur les intervalles : 5(a + b) = − 4 ((−a) + (−b)), etc. Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 5/9 Des opérations de base au calcul vectoriel Calcul vectoriel : utiliser MKL pour bénéficier de ses algorithmes optimisés. MKL ne permet pas de modifier le mode d’arrondi On voudrait set roundingmode ... call MKL set roundingmode ... et dans MKL grâce à un raisonnement de haut niveau, retrouver par exemple pour un calcul de matrice A = (Aij ) un résultat ([5(Aij ), 4(Aij )]). Des astuces telles que celles pour éviter les changements de mode d’arrondi dans l’arithmétique de base sur les intervalles : 5(a + b) = − 4 ((−a) + (−b)), etc. Mais on essaie de faire cela en faisant des hypothèses sur un code inconnu ! Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 5/9 Choix du mode d’arrondi ? Comportement multi-threads et en cluster I Assembleur fldcw/fstcw en x87, ldmxcsr/stmxcsr avec les instructions SSE : jouent sur 2 registres différents I C99 fesetround : garantit la synchronisation des 2 registres I Matlab : il faut s’interfacer avec fesetround, pas prévu d’être ajouté directement (system dependent ("setround",Inf) non documenté) I Un même code MKL n’est pas compilé de la même façon selon la longueur d’un mot, selon la marque du processeur, sur x87, avec les instructions SSE, etc. I Comportement multi-threadé ? en cluster ? Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 6/9 Le mode d’arrondi n’est pas pour moi ! I Le code de printf et de scanf ne consulte jamais le mode d’arrondi, la conversion décimal ←→ binaire est toujours faite en arrondi au plus près, quel que soit le mode d’arrondi courant I exp et d’autres fonctions élémentaires (glibc bug report/fix 3976, 29/2/12) rendent des résultats complètement faux pour les modes d’arrondis autres que l’arrondi au plus près Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 7/9 Variation du mode d’arrondi au cours d’un calcul ? Assertion Frédéric Goualard (Mailing list ”Reliable Computing”) Le mode d’arrondi en Matlab peut changer au cours d’un calcul sans qu’on intervienne Exemple : fesetround(FE_DOWNWARD) 2*pow2(2-eps,1023) 2*realmax realmax=pow2(2-eps,1023) 2*pow2(2-eps,1023) Comportement normal observé sur Matlab 2012a, pas d’autre appel à fesetround détecté que le nôtre mais précision excessive du résultat (55 bits de mantisse) menace pour une arithmétique fiable. On n’est évidemment pas à l’abri d’une désynchronisation des deux registres de mode d’arrondi mais nous n’avons rien constaté pour l’instant dans nos expérimentations. Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 8/9 Conclusion On a besoin au moins : I que chaque composant qui modifie le mode d’arrondi le signale dans sa documentation I que chaque composant signale s’il tient compte ou non du mode d’arrondi courant pour pouvoir mettre en place d’éventuels contournements. En soi ce n’est pas un problème scientifique, c’est un problème technique et documentaire, par exemple pour scanf et printf un code qui permet de tenir compte du mode d’arrondi courant a déjà été écrit (stage Olga Kupriianova) Pas d’arithmétique fiable sans accès fiable au mode d’arrondi - Christoph Lauter & Valérie Ménissier-Morain - UPMC 9/9