Séminaire-UTC- Christophe DENIS 14-Janvier-2016

publicité
SEMINAIRE ROBERVAL
Jeudi 14 Janvier 2016 à 14h30, Salle H224
Prise en compte de l'incertitude numérique dans un processus de V&V d’un
code de calcul scientifique : une réponse au nécessaire compromis entre la
performance et la précision de simulations à large échelle.
Christophe DENIS,
Chargé de Formation et de Recherche (HDR), et Chef de Projet, EDF R&D.
Centre de Mathématiques et de Leurs Applications (ENS Cachan)
Mots clés : vérification numérique automatique, calcul haute performance, simulations à large échelle.
Résume
L’arithmétique flottante IEEE-754 utilisée par les moyens de calcul est un modèle de l’arithmétique exacte. Le calcul flottant
est source de pertes de propriétés arithmétiques comme l’associativité de la somme et de propagation d’erreurs d’arrondi.
Ces effets indésirables du calcul flottant peuvent conduire à une perte de précision des calculs d’un code scientifique sans
que l’utilisateur et le programmeur en soient avertis. Il convient donc de tenir d’une part de l’approximation du calcul
flottant dans un processus de V&V rigoureux d’un code scientifique et d’autre part de son interaction avec d’autres types
d’approximation, par exemple avec l’erreur de discrétisation de méthodes de différences finies.
Au niveau du calcul haute performance et en notamment vue du futur calcul exaflopique, les résultats d’un code scientifique
utilisant le calcul en arithmétique flottante peuvent varier (perte de reproductibilité numérique) selon les environnements de
calcul et de compilation utilisés. En effet, l’optimisation de la performance d’un logiciel de calcul conduit à ce que sa
reproductibilité numérique ne soit plus forcément assurée. L’ordre d’évaluation des opérations arithmétiques flottantes peut
être différent pour s’adapter à la charge des machines ou du réseau. Une première solution est de forcer la reproductibilité
numérique d’un code en inhibant certaines optimisations ralentissant d’autant les performances du code. Cependant,
l’obtention de la reproductibilité numérique ne permet pas de quantifier la précision numérique des résultats produits. Enfin,
les quantités de mémoire et d’énergie électrique requises par les simulations numériques à large échelle deviennent de plus
en importante. Un moyen de réduire ces quantités est d’utiliser la simple précision dans certains calculs intermédiaires (par
exemple en utilisant des algorithmes en précision mixte) si cela n’altère pas la précision des résultats de la simulation.
L’approche que nous proposons est de concilier la performance et la précision numérique de simulations scientifiques car
comme le mentionne Ian S. Duff « Getting different results for different runs of the same computation can be disconcerting
for users even if, in a sense, both results are correct ». Il est donc nécessaire de fournir des intervalles de confiance des
calculs en arithmétique flottante pour valider ou non un résultat de calcul flottant IEEE-754. L’arithmétique de Monte-Carlo
qui perturbe l’arithmétique flottante fournit des distributions de résultats de calcul sur lesquelles sont déterminées des
statistiques. Il est toutefois crucial d’un point de vue génie logiciel que l’implémentation de l’arithmétique de Monte-Carlo
dans un code scientifique s’effectue sans modification du code source pour être intégrée dans un processus automatique de
V&V. Ainsi, nous avons développé avec Eric Petit et Pablo de Oliveira Castro, le logiciel verificarlo qui implémente
automatiquement à la compilation l’arithmétique de Monte Carlo dans un code scientifique écrit en C, C++ ou Fortran. Des
développements en cours dans ce logiciel ont pour objectif d’intégrer un post-traitement statistique automatique.
Le plan de l’exposé est le suivant. Il est tout d’abord présenter la problématique du nécessaire compromis entre la
performance et la précision de simulations numériques. Un bref panorama des techniques de vérification numérique sont
ensuite exposées. L’arithmétique de Monte-Carlo puis le logiciel verificarlo sont ensuite décrits. Une démonstration de ce
logiciel sera effectuée sur des exemples ainsi que sur la bibliothèque de calcul LAPACK. Nous illustrerons notre approche
de V&V sur un code de simulation des écoulements à surface libre. Nous présenterons enfin des premiers résultats obtenus
sur la prise en compte simultanée de l’erreur de calcul générée par l’arithmétique flottante et l’erreur de troncature d’une
méthode des différences finies.
Téléchargement