Stage rémunéré : Développement de noyaux GPUs pour le code open-source hawen

The offer description be low is in French

Contract type : Fixed-term contract

Level of qualifications required : Graduate degree or equivalent

Fonction : Internship Research

Context

L’objectif de ce stage est de développer des noyaux GPUs pour le code open-source hawen (https://ffaucher.gitlab.io/hawen-website/, [3]) de l’équipe Inria Makutu. Le code est utilisé pour simuler la propagation d’ondes mécaniques dans des milieux tels que la Terre et le Soleil. Il sert également pour les problèmes d’imagerie, c’est à dire la reconstruction des propriétés physiques d’un milieu à partir de mesures d’ondes se propageant dans celui-ci. La discrétisation des équations d’ondes utilise la méthode HDG (“Hybridizable Discontinuous Galerkin”) qui est particulièrement efficace pour des ordres de polynomes élevés et, contrairement à d’autres approches plus standards, impliquent de nombreuses opérations de multiplication de matrices denses, ainsi que l’inversion de
ces matrices.
Actuellement, le code utilise uniquement le parallélisme sur CPUs, en combinant MPI et OpenMP.
Il a été utilisé sur plusieurs milliers de CPUs, permettant notamment de simuler la propagation d’ondes à l’intérieur du Soleil entier. L’ajout de la parallélisation sur GPUs des opérations sur les matrices denses devraient permettre d’améliorer les performances, e.g., [4, 5].

1] T. Deakin and T. Mattson, Programming your GPU with OPENMP, The MIT Press, Cambridge, Massachusetts, first ed., 2023.
[2] M. Fatica and G. Ruetsch, CUDA Fortran for Scientists and Engineers, ELSEVIER, first ed., 2009.
[3] F. Faucher, hawen: time-harmonic wave modeling and inversion using hybridizable
discontinuous Galerkin discretization, Journal of Open Source Software, 6 (2021, https://ffaucher.gitlab.io/hawen-
website/).
[4] A. Klöckner, T. Warburton, J. Bridge, and J. S. Hesthaven, Nodal discontinuous Galerkin methods on graphics processors, Journal of Computational Physics, 228 (2009), pp. 7863–7882.
[5] A. Klöckner, T. Warburton, and J. S. Hesthaven, High-order discontinuous Galerkin methods by GPU metaprogramming, in GPU Solutions to Multi-scale Problems in Science and Engineering, Springer, 2013, pp. 353–374.

Main activities

Les objectifs de stage sont les suivants :

  • L’étudiante/étudiant devra être en mesure de comprendre les grandes étapes de la méthode HDG, afin de repérer quelles sections dans le code seront le plus propices à une parallélisation sur GPUs.
    L’étudiante/étudiant proposera une stratégie de parallélisation sur GPUs.
  • Dans un premier temps, on utilisera le standard OpenMP 5, [1], pour voir quelles parties peuvent être accélerées. Dans un second temps, on envisagera une implémentation directe en Cuda Fortran [2] pour contrôler encore
    plus finement les optimisations (transferts asynchrones, etc...)
  • Validation des performances avec un passage à l’échelle sur grappe de calcul et comparaison des
    approches OpenMP 5 et Cuda.
  • Documentation des développements et de leurs utilisations.

Skills

La personne recherchée doit avoir de solides connaissances en calcul haute-performance à la fois sur CPU (MPI, OpenMP, SIMD) mais surtout une connaissance approfondie de la parallélisation sur GPU (Cuda, OpenCL ou RocM).

Il est attendu qu’elle sache profiler et d’optimiser de tels codes.
Elle devra aussi être capable de lire des articles scientifiques en anglais ainsi que produire un rapport d’avancement.

Il est par conséquent fortement recommandé d’être à l’aise avec la communication en anglais.

Benefits package

  • Restauration subventionnée
  • Transports publics remboursés partiellement

Remuneration

SMIC