Suivez

la liste

Labo d'accueil : ISAS/DES/DM2S/STMF/LGLS
Encadrants : Adrien BRUNETON (adrien.bruneton@cea.fr), Pierre LEDAC (pierre.ledac@cea.fr)
Démarrage : mars 2023

La plateforme opensource de simulation thermohydraulique TRUST [1] permet la résolution des équations de Navier-Stokes pour des fluides incompressibles ou quasi-compressibles. 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 de mailles sur plus de 50'000 processeurs ont déjà été réalisés.
Ces performances ont été 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 la bibliothèque MPI sur un ensemble de processeurs. Les CPUs de chacun des nœuds sont ainsi mis à contribution.
Les dernières avancées dans le domaine du HPC indiquent que la puissance des futures machines de calcul ne viendra plus seulement de ces CPUs, mais qu'une infrastructure hétérogène mélangeant CPU et GPU et/ou APU doit maintenant être envisagée. Par exemple, la future machine du CINES ("Ad Astra") tirera la majorité de sa puissance de calcul des GPU.
Dans ce contexte, le code TRUST doit évoluer pour bénéficier de ces nouveaux moyens. Des premiers travaux ont déjà été menés, notamment pour s’interfacer avec les bibliothèques AmgX [3] et rocALUTION [4] pour la partie solveur linéaire, et l'utilisation d’un langage par directives OpenMP [5] pour les autres parties du code.
Le but de ce stage est de comparer ces approches avec ce que propose la bibliothèque opensource Kokkos [2], vers laquelle se tournent maintenant de nombreuses applications, notamment parce que Kokkos propose une portabilité native vers de nombreuses architectures (différentes hiérarchisation de la mémoire, différents modèles d'exécution), et évite ainsi normalement de trop spécialiser le code.
Le stage débutera par le codage en Kokkos d'un solveur de diffusion basée sur une approche conservative, représentatif du schéma numérique typique de TRUST. Il s'agira d'explorer les différentes voies offertes par Kokkos.
Une fois une stratégie définie, l'implémentation se poursuivra par la mise en œuvre de ces mécanismes dans TRUST lui-même et une comparaison des gains obtenus par rapport aux stratégies actuellement implémentées sera faite.

Lieu :
Le stage se déroulera dans les locaux du DES/ISAS/DM2S/STMF/LGLS 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 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] Librairie rocALUTION : https://github.com/ROCmSoftwarePlatform/rocALUTION
[5] OpenMP offloading : https://enccs.github.io/openmp-gpu/introduction