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.