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

Documents pareils