Suivez

la liste

Analyse de la précision numérique sur la plateforme HPC thermohydraulique TRUST pour le portage GPU

Labo d'accueil : ISAS/DES/DM2S/SGLS/LCAN
Encadrants : Adrien BRUNETON (adrien.bruneton@cea.fr), Ansar CALLOO (ansar.calloo@cea.fr), Rémi BOURGEOIS (remi.bourgeois@cea.fr)
Démarrage : dès que possible.
Durée : 5-6 mois

La plateforme opensource de simulation thermohydraulique TRUST [1] permet la résolution des équations de Navier-Stokes pour des écoulements multi-phases. La simulation peut se faire sur des domaines présentant une résolution spatiale extrêmement fine grâce aux très bonnes performances HPC du code. Ainsi des simulations de plus de 2Mards d’éléments sur plus de 50'000 processeurs ont déjà été réalisées.
Ces performances sont obtenues grâce au modèle de parallélisme de TRUST basé sur une approche SPMD: le domaine de calcul est subdivisé en sous-domaines, qui sont ensuite distribués, via MPI, sur un ensemble de processeurs.
Les dernières avancées dans le domaine du HPC indiquent que la puissance des futures machines de calcul ne viendra plus seulement des CPUs traditionnels, mais aussi des accélérateurs graphiques (GPU). Ainsi la future machine exascale européenne Alice Recoque [5], sur laquelle TRUST devra pouvoir s’exécuter, verra la majeure partie de sa puissance de calcul provenir des GPU. Dans TRUST, un travail conséquent de portage du code a déjà été réalisé, notamment grâce à des solveurs linéaires creux adaptés au GPU (tel AmgX [2]) et à la librairie Kokkos [3].
Une des questions posées par le GPU pour le calcul scientifique est la précision des opérations flottantes. Actuellement les accélérateurs graphiques proposent encore des unités de calcul en précision double (FP64), mais les orientations actuelles prises par les constructeurs (NVidia et AMD principalement), et la pression croissante des besoins de l’IA, font que ces caractéristiques pourraient changer à moyen terme. De nombreux calculs d’IA peuvent par exemple se faire en précision simple (FP32) voire ‘half’ (FP16) sans dégrader les résultats.
Afin d’anticiper ces futurs changements, nous devons évaluer dans TRUST les parties du code pour lesquels la précision double est indispensable, et a contrario, les calculs qui pourraient se faire en précision réduite sans affecter la qualité finale des résultats.
Plusieurs outils permettant ce type d’analyse sont disponibles dans la communauté dont :

  • VERROU [4], qui permet la détection d’erreurs numériques sans avoir besoin ni d’instrumenter, ni de recompiler le code ;
  • VerifiCarlo [6], proposant des services similaires, mais légèrement plus intrusif, car nécessitant de recompiler le code, mais toujours sans en changer les sources.
    Le travail du stage consistera donc :
  • à prendre en main ces outils (VERROU en priorité, vu sa simplicité de mise en oeuvre), tout d’abord sur des exemples jouets,
  • et ensuite à appliquer ces outils sur des calculs représentatifs de la base de cas tests de TRUST pour identifier les parties du code pour lesquelles un niveau de précision élevée est requis.
    Si le temps le permet, des stratégies de compensation ou de mitigation pourront être explorées et testées dans TRUST.

Lieu :
Le stage se déroulera dans les locaux du DES/ISAS/DM2S/SGLS/LCAN au CEA Saclay. Un système de navette permet de s'y rendre depuis plusieurs points de départ autour de Paris, et en banlieue.

Compétences :

  • bonne maîtrise du C++, avec des connaissances sur le parallélisme
  • scripting Python, shell et une aisance avec l'environnement Linux en général,
  • des connaissances sur les notions de précision numérique et sur la gestion de version GIT seront appréciées.

Rémunération : la rémunération est fixée par les grilles du CEA et dépend de la formation initiale du (de la) candidat(e) retenu(e).

Références
[1] TRUST - https://github.com/cea-trust-platform/trust-code
[2] Framework Kokkos : https://github.com/kokkos
[3] Librairie AmgX : https://developer.nvidia.com/amgx
[4] VERROU : https://github.com/edf-hpc/verrou
[5] Supercalculateur Alice Recoque - https://www.cea.fr/english/Pages/News/signature-hosting-agreement-second-european-exascale-supercomputer-Alice-Recoque.aspx
[6] VerifiCarlo : https://github.com/verificarlo/verificarlo