Génération de code JIT pour la génération de noyaux de calculs complexes en mécanique du solide
Spécialité | Mécanique |
Ecole doctorale | ISMME - Ingénierie des Systèmes, Matériaux, Mécanique, Énergétique |
Directeur de thèse | KERFRIDEN Pierre |
Unité de recherche | Centre des Matériaux |
Contact | |
Date de validité | 21/11/2024 |
Site Web | https://www.mat.minesparis.psl.eu/formation/doctorat/propositions-de-sujets-de-these/ |
Mots-clés | Generation de code, , portage GPU, , mécanique numérique,, calcul scientifique, , optimisation de code, , differentiation automatique Code generation, , computational mechanics,, scientific computing, , code optimization,, automatic differentiation |
Résumé | Les lois de comportement décrivent toute la connaissance physique des matériaux considérés. La complexité de ces lois augmentent à mesure que ces connaissances évoluent. L'étape d'intégration de la loi de comportement est une étape clé pour les performances et la robustesse des calculs scientifiques.
De nombreuses plateformes numériques (FEniCS, FireDrake, FreeFEM, Comsol) proposent des techniques de génération de code à la volée (JIT, pour Just In Time) pour gérer plusieurs physiques dans une approche monolithique. Cette technique réduit considérablement les temps de mise à oeuvre de nouvelles simulations (et offre de ce fait une grande versatilité à l'utilisateur) mais permet également une optimisation spécifique au cas traité ou un portage transparent sur diverses architectures (CPU ou GPU).
Notre expérience du développement du projet MFEM-MGIS [9] a montré qu'une génération de code permet d'optimiser 10 à 15% les performances des d'assemblages des forces internes et des forces extérieures. Par ailleurs, notre expérience du portage des lois de comportement sur GPUs montre que les noyaux générés doivent être hautement spécialisés pour optimiser les transferts mémoire et les accès aux données, ce qui est en pratique incompatible avec la flexibilité requise par la diversité de situations traitées par un code généraliste. A titre d'exemple, le fait de savoir si une variable comme la température est constante et uniforme est une information précieuse pour l'optimisation du noyau d'une loi de comportement mécanique simple. Or, cette information n'est généralement connue qu'au moment de lancer la simulation et il est inenvisageable de pré-compiler tous les cas possibles. Les codes se reposent donc sur des traitements non optimaux.
Un dernier avantage de la génération de code est de permettre une meilleure évolutivité du code en masquant les détails d'implémentation: ces derniers peuvent éventuellement être remaniés en profondeur sans impact pour l'utilisateur. FEniCS, FireDrake et Dune se reposent sur le language Unified Form Language (UFL) permettant de décrire équations d'équilibre, conditions aux limites, post-traitements sous forme variationnelle [1]. La bibliothèque scikit-fem fournit des fonctionnalités similaires [2, 3]. La DAM a également développé un “domain specific language” nommé ∇ pour simplifier l'écriture d'applications HPC [10]. Cependant, ces solutions sont généralement limitées aux étapes d'assemblage des forces intérieures et des matrices de raideurs et n'incluent pas l'étape d'intégration de la loi de comportement. Elles sont par ailleurs généralement limitées aux éléments finis standard et ne considèrent généralement pas les méthodes de type Hybrid Discontinuous Galerkin (HDG) [4] / |
Contexte | Fortement inspiré par notre expérience du projet mgis.fenics [5], ce sujet se propose de développer une solution de génération de code à la volée pour le solveur de nouvelle génération Manta [6] permettant un couplage fort avec les lois de comportement générées par MFront [7, 8]. Ce générateur de code devra s'intégrer dans l'interface utilisateur de Manta et en particulier s'intégrer naturellement et de manière transparente avec les modèles existants.
Dans la phase bibliographique, le doctorant devra tester les différentes solutions disponibles dans la littérature pour évaluer la meilleure stratégie à adopter pour le projet [1, 2, 10]. 1 Le doctorant devra ensuite de se focaliser sur le développement d'une solution de génération de code pour CPU et GPUs et sur l'optimisation des noyaux générés dans le cadre des éléments finis et des méthodes HDG.
La génération de code sera appliquée à différentes physiques de complexité croissante (thermique, mécanique faiblement non linéaire, mécanique fortement non linéaire, thermo-mécanique couplé, etc..). |
Encadrement | Directeur de thèse Pierre Kerfriden Centre des Matériaux Mines Paris PSL
Co-encadrant Basile Marchand Centre des Matériaux Mines Paris PSL
Co-encadrant Thomas Helfer, CEA Cadarache
Co-encadrant Maxence Wangermez, CEA Cadarache |
Profil candidat | Profil type pour une thèse à MINES ParisTech: Ingénieur et/ou Master recherche - Bon niveau de culture générale et scientifique. Bon niveau de pratique du français et de l'anglais (niveau B2 ou équivalent minimum). Bonnes capacités d'analyse, de synthèse, d'innovation et de communication. Qualités d'adaptabilité et de créativité. Capacités pédagogiques. Motivation pour l'activité de recherche. Projet professionnel cohérent.
Pré-requis (compétences spécifiques pour cette thèse):
M2 en sciences de l'informatique, physique, mécanique numérique, bioinformatique avec une forte composante sur la génération de code de calcul scientifique efficace.
Pour postuler: Envoyer votre dossier à recrutement_these@mat.mines-paristech.fr comportant :
un curriculum vitae détaillé
une copie de la carte d'identité ou passeport
une lettre de motivation/projet personnel
des relevés de notes L3, M1, M2
2 lettres de recommandation
les noms et les coordonnées d'au moins deux personnes pouvant être contactées pour recommandation
une attestation de niveau d'anglais / |
Résultat attendu | L'un des résultats espérés de la thèse serait une simulation thermomécanique d'un fragment de pastille combustible et de sa gaine en vis à vis, résolue de manière monolothique et tenant compte de manière exacte de tous les termes de couplage. Un tel calcul n'a encore jamais été fait au sein de la plate-forme PLEIADES. |
Références | 1. https://fenics.readthedocs.io/projects/ufl/en/latest/
2. https://scikit-fem.readthedocs.io/en/latest/
3. Gustafsson et al., (2020). scikit-fem: A Python package for finite element assembly. Journal of Open Source Software, 5(52), 2369, https://doi.org/10.21105/joss.02369
4. David Siedel. Une approche numérique robuste pour la description de la rupture fragile et du comportement viscoplastique des crayons de combustible. Thèse de doctorat. 2023
5. https://thelfer.github.io/mgis/web/mgis_fenics.html
6. Olivier Jamond, Nicolas Lelong, Axel Fourmont, Joffrey Bluthé, Matthieu Breuze, et al.. MANTA : un code HPC généraliste pour la simulation de problèmes complexes en mécanique. CSMA 2022 15ème Colloque National en Calcul des Structures, May 2022, Giens, France.
7. Thomas Helfer, Bruno Michel, Jean-Michel Proix, Maxime Salvo, Jérôme Sercombe et Michel Casella. Introducing the open-source mfront code generator: Application to mechanical behaviours and material knowledge management within the Pleiades fuel element modelling platform. Computers & Mathematics with Applications. 2015.
8. https://thelfer.github.io/tfel/web/index.html
9. https://thelfer.github.io/mfem-mgis/web/index.html
10. http://www.nabla-lang.org |
Type financement | Financement d'un établissement public Français |
Document PDF | https://www.adum.fr/script/downloadfile.pl?type=78&ID=57541 |