Suivez

la liste

Contexte : Le code de calcul GYSELA est développé à l’IRFM, au CEA Cadarache, depuis plus de 20 ans pour étudier la turbulence des plasmas de tokamaks. Écrit en Fortran, MPI + OpenMP, il tourne efficacement sur plus de 100k cœurs; mais obtenir de telles performances sur GPU est loin d’être trivial. Réaliser des simulations ITER ne sera possible qu’en adaptant les multiples discrétisations utilisées dans chaque dimension : maillage, splines, Fourier, etc. Fortran qui limite les abstractions fournies à des tableaux multi-dimensionnels avec de nombreux choix implicites (type de maillage, distribution, etc.) se prête mal à ces adaptations. La Maison de la Simulation développe la bibliothèque DDC qui offre un modèle de programmation C++ intégrant directement la notion de discrétisation. Cette approche permet de lever les implicites via des abstractions gérées à la compilation sans surcoût à l’exécution. Cela rend notamment le code plus adaptable au niveau algorithmique et des architectures matérielles.

Missions du candidat : Dans le cadre de la collaboration entre la Maison de la Simulation et l’IRFM, le candidat se focalisera sur le co-développement de la bibliothèque DDC avec la réécriture de la mini-app VOICE issue de GYSELA. Au-delà des cas d’utilisation propres à VOICE++, ces développements se feront de manière modulaire pour servir de base à une réécriture de GYSELA. Ils seront l’occasion d’évaluer les gains en lisibilité, maintenabilité, portabilité et adaptabilité offerts par cette approche. Plus précisément il s’agira de :

  • Porter les squelettes algorithmiques existants dans la bibliothèque DDC sur GPU en s’appuyant sur la bibliothèque Kokkos.
  • Développer une version C++ de VOICE s’appuyant sur DDC optimisée pour les architectures GPU et comparer les performances obtenues avec le code Fortran VOICE récemment porté sur GPU via OpenACC.
  • S’appuyer sur les fonctionnalités de décomposition de domaine présentes dans DDC afin d’ajouter une parallélisation multi-GPUs à l’aide de MPI.
  • Si le temps le permet, réaliser une preuve de principe avec le développement d’une maquette 4D permettant de se rapprocher des problématiques des codes gyrocinétiques.