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

par Yohan Chatelain

Thèse de doctorat en Informatique

Sous la direction de William Jalby.

Soutenue le 12-12-2019

à l'Université Paris-Saclay (ComUE) , dans le cadre de École doctorale Sciences et technologies de l'information et de la communication (Orsay, Essonne ; 2015-....) , en partenariat avec Laboratoire d’informatique parallélisme réseaux algorithmes distribués (Saint-Quentin en Yvelines, Yvelines ; 2015-....) (laboratoire) , Université de Versailles-Saint-Quentin-en-Yvelines (établissement opérateur d'inscription) et de Laboratoire d'Informatique Parallélisme Réseaux Algorithmes Distribués / LI-PaRAD (laboratoire) .

Le président du jury était Sylvie Boldo.

Le jury était composé de Stef Graillat, Florent Dupont de Dinechin, Pablo de Oliveira Castro Herrero, Marius Cornea.

Les rapporteurs étaient Stef Graillat, Florent Dupont de Dinechin.


  • Résumé

    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.

  • Titre traduit

    Tools for debugging and optimizing floating-point computations in HPC


  • Résumé

    High Performance Computing (HPC) is a dynamic ecosystem where scientific computing architectures and codes are in permanent co-evolution (parallelism, specialized accelerators, new memories).This dynamism requires developers to adapt their software regularly to exploit all the new technological innovations.For this purpose, co-design approaches consisting of simultaneously developing software and hardware are an interesting approach.Nevertheless, co-design efforts have mainly focused on application performance without necessarily taking into account the numerical quality.However, this is becoming increasingly difficult to maintain from one generation of supercomputer to the next due to the increased complexity of the hardware and the parallel programming models. In addition, there are new floating point computation formats (bfloat16, binary16) that should be harnessed during the modernization process.These findings raise two issues:1) How to check the digital quality of codes during the modernization process? This requires tools that allow both to quickly identify sources of numerical errors and to be user-friendly for non-expert users.2) How can we take advantage of the new possibilities offered by the equipment?The applications possibilities are manifold and therefore lead to a considerable space of possible solutions. The solutions found are the result of a compromise between the performance of the application and the numerical quality of the computations, but also the reproducibility of the results.In this thesis, we contributed to the Verificarlo software that helps to detect numerical errors by injecting various noise models into floating computations. More precisely, we have developed an approach to study the evolution of numerical errors over time. This tool is based on the generation of numerical traces that allow the numerical quality of the variables to be tracked over time. These traces are enriched by context information retrieved during compilation and can then be viewed in an elegant way.We also contributed to VPREC, a computation model simulating formats of varying sizes. This tool has been used to address the problem of format optimization in iterative schemes. The proposed optimization is temporal since it optimizes the computation precision for each time step.Finally, a major constraint in the development of tools for HPC is the scaling up. Indeed, the size of the codes and the number of computations involved drastically increase the complexity of the analyses and limit conventional approaches. We have demonstrated that the techniques developed in this thesis are applicable to industrial codes since they have made it possible, first, to detect and correct a numerical error in the ABINIT code (ab initio code for quantum chemistry developed by the CEA et al.). Secondly, these tools have reduced the computation accuracy of YALES2 (fluid mechanics code developed by CORIA) and improved performance by reducing communication volumes by 28% and accelerating execution up to 1.30 times.


Il est disponible au sein de la bibliothèque de l'établissement de soutenance.

Consulter en bibliothèque

La version de soutenance existe

Où se trouve cette thèse\u00a0?

  • Bibliothèque : Université de Versailles Saint-Quentin-en-Yvelines. Service Commun de la Documentation. Bibliothèque électronique.
Voir dans le Sudoc, catalogue collectif des bibliothèques de l'enseignement supérieur et de la recherche.