Thèse soutenue

Optimisation des performances parallèles d'un solveur CFD pour les plateformes de calcul émergentes

FR  |  
EN
Auteur / Autrice : Francesco Gava
Direction : Alain Berlemont
Type : Thèse de doctorat
Discipline(s) : Énergétique
Date : Soutenance le 04/02/2022
Etablissement(s) : Normandie
Ecole(s) doctorale(s) : École doctorale physique, sciences de l’ingénieur, matériaux, énergie (Saint-Etienne du Rouvray, Seine Maritime)
Partenaire(s) de recherche : Établissement de préparation : Institut national des sciences appliquées Rouen Normandie (Saint-Etienne-du-Rouvray ; 1985-....)
Laboratoire : Complexe de recherche interprofessionnel en aérothermochimie (Saint-Etienne-du-Rouvray, Seine-Maritime ; 1967-....)
Jury : Président / Présidente : Luc Giraud
Examinateurs / Examinatrices : Alain Berlemont, Marc Pérache, Emmanuel Jeannot, Vincent Moureau, Gabriel Staffelbach
Rapporteur / Rapporteuse : Marc Pérache, Emmanuel Jeannot

Résumé

FR  |  
EN

L’importance de la dynamique des fluides numérique dans le processus de conception industrielle a augmenté de façon spectaculaire au cours des deux dernières décennies. Cette évolution est principalement due aux progrès technologiques qui ont permis de disposer de clusters plus puissants et moins chers pour effectuer des simulations. Les CPU multi-cœurs et les GPGPU étant la nouvelle norme pour la construction de clusters, les plateformes deviennent de plus en plus variées. Cependant, la plupart des codes CFD ont été conçus pour les anciennes architectures et sont désormais incapables d’exploiter pleinement les machines les plus modernes. Cette thèse tente d’aborder certains des problèmes de performance que les codes CFD peuvent rencontrer sur les plateformes émergentes. Les performances du solveur incompressible massivement parallèle YALES2 ont été analysées, afin d’identifier les points forts et les goulots d’étranglement dans les parties les plus importantes du solveur. Un accent particulier a été mis sur le solveur linéaire, où la plupart du temps de calcul est passé. Un modèle de performance extrêmement simpliste a été obtenu pour toutes les parties fondamentales du solveur de Poisson. Afin de résoudre certains des problèmes mis en évidence par cette analyse, une nouvelle structure de données a été introduite dans le code, ce qui a permis de réduire le temps de calcul et de rendre le code lui-même plus flexible, en découplant deux concepts fondamentaux tels que les groupes d’éléments utilisés pour le cache-blocking et la grille de déflation du PCG. En outre, pour essayer d’exploiter les processeurs modernes à mémoire partagée, deux modèles hybrides MPI+OpenMP différents ont été mis en œuvre. Tout d’abord, une tentative a été faite avec un modèle OpenMP fine-grain, basé sur la parallélisation des boucles. Ce modèle semblait particulièrement adapté à la majeure partie de la structure de YALES2, mais présentait quelques difficultés qui le rendaient moins efficace dans certaines autres parties clés du solveur. Malgré les nombreuses tentatives d’optimisation, ce modèle n’a finalement pas permis d’améliorer les performances de l’implémentation MPI pure. Ensuite, afin de surmonter les problèmes de l’implémentation fine-grain, un modèle OpenMP coarse-grain a été introduit. Principalement en raison du fait que les bibliothèques MPI sont séquentialisées en interne pour maintenir la thread-safety, cette mise en œuvre n’a pas non plus été fructueuse. Elle a cependant permis d’introduire certaines caractéristiques de modernisation du code, telles qu’une thread-safety complète et une API de communication abstraite. En conclusion, ce travail montre les défis que représente l’adaptation d’un solveur de CFD incompressible low-Mach tel que YALES2 aux architectures les plus modernes actuellement disponibles. Malgré la faible efficacité de la plupart des solutions proposées, plusieurs questions intéressantes ont été soulevées, et de nombreuses perspectives d’optimisations futures ont été facilitées grâce au travail de fond sur la structure du code effectué au cours de cette thèse.