Thèse soutenue

Outils de débogage et d'optimisation des calculs flottants dans le contexte HPC

FR  |  
EN
Auteur / Autrice : Yohan Chatelain
Direction : William Jalby
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 12/12/2019
Etablissement(s) : Université Paris-Saclay (ComUE)
Ecole(s) doctorale(s) : École doctorale Sciences et technologies de l'information et de la communication (Orsay, Essonne ; 2015-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire d’informatique parallélisme réseaux algorithmes distribués (Saint-Quentin en Yvelines, Yvelines ; 2015-....) - Laboratoire d'Informatique Parallélisme Réseaux Algorithmes Distribués / LI-PaRAD
établissement opérateur d'inscription : Université de Versailles-Saint-Quentin-en-Yvelines (1991-....)
Jury : Président / Présidente : Sylvie Boldo
Examinateurs / Examinatrices : Stef Graillat, Florent Dupont de Dinechin, Pablo de Oliveira Castro Herrero, Marius Cornea
Rapporteurs / Rapporteuses : Stef Graillat, Florent Dupont de Dinechin

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

Le Calcul Haute Performance (HPC) est un écosystème dynamique où architectures et codes de calcul scientifiques sont en co-évolution permanente (parallélisme, accélérateurs spécialisés, nouvelles mémoires).Ce dynamisme impose aux développeurs d'adapter leur logiciel régulièrement pour exploiter au mieux tous les nouveaux ressorts technologiques.En cela, les approches de co-design consistant à développer simultanément le logiciel et le matériel sont une voie intéressante.Néanmoins, les efforts de co-design dans le HPC ont surtout été concentrés sur la performance des applications en laissant un peu de côté l'objectif de qualité numérique.Or celle ci est de plus en plus difficile à maintenir d'une génération de supercalculateur à l'autre en raison de la complexité croissante des architectures et des modèles de programmation parallèles. A cela s'ajoute de nouveaux formats de calcul flottants (bfloat16, binary16) qu'il faut réussir à exploiter lors du processus de modernisation.Ces constats posent deux problématiques :1) Comment vérifier la qualité numérique des codes lors du processus de modernisation ? Cela nécessite des outils qui permettent, à la fois d'identifier rapidement des sources d'erreurs numériques mais qui doivent également être simple d'utilisation pour des utilisateurs non-experts.2) Comment tirer parti des nouvelles possibilités qu'offre le matériel ?Les possibilités d'applications sont nombreuses et amènent donc à un espace considérable de solutions possibles. Les solutions trouvées sont le résultat d'un compromis entre performance de l'application et qualité numérique des calculs mais également reproductibilité des résultats.Dans cette thèse, nous avons contribué au logiciel Verificarlo qui aide à la détection d'erreurs numériques en injectant divers modèles de bruit dans les calculs flottants. Plus précisément, nous avons développé une approche permettant d'étudier l'évolution des erreurs numérique au cours du temps. Cet outil est basé sur la génération de traces numériques qui permettent de suivre la qualité numérique des variables au cours du temps. Ces traces sont enrichies par des informations de contexte récupérées lors de la compilation puis peuvent être ensuite visualisées de manière élégante.Nous avons également contribué à VPREC, un modèle de calcul simulant des formats de taille variable. Cet outil a été utilisé pour répondre au problème d'optimisation de formats dans les schémas itératifs. L'optimisation proposée est temporelle puisqu'elle optimise la précision de calcul pour chaque pas de temps.Enfin, une contrainte majeure dans l'élaboration d'outils pour le HPC est la mise à l'échelle. En effet, la taille des codes et la quantité de calcul mis en jeux accroissent drastiquement la complexité des analyses et limitent les approches conventionnelles. Nous avons démontré que les techniques développés dans cette thèse sont applicables sur des codes industriels puisqu'ils ont permis de, premièrement, détecter et corriger une erreur numérique dans le code ABINIT (code ab initio de chimie quantique développé par le CEA et al.). Secondement, ces outils ont permis de réduire la précision de calcul de YALES2 (code de mécanique des fluides développé par le CORIA) et améliorer les performance en réduisant le volumes des communications de 28% et accélérer jusqu'à 1,30 fois l’exécution.