Optimisation of the parallel performances of a CFD solver for emerging computational platforms - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2022

Optimisation of the parallel performances of a CFD solver for emerging computational platforms

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

Résumé

The importance of Computational Fluid Dynamics in the industrial design process has increased dramatically in the last two decades. This is mainly due to the technological advancements that have brought on more powerful and cheaper clusters to run simulations on. With multi-core CPUs and GPGPUs being the new standard for cluster builds, platforms are becoming more and more varied. However, most CFD codes were designed for the older architectures and are now incapable of fullyexploiting the most modern machines. This thesis tries to address some of the performance issues that CFD codes might encounter or the emerging platforms. The performances of the massively parallel low-Mach incompressible solver YALES2 have been analysed, in order to identify strong points and bottlenecks in the most important parts of the solver. Particular focus was put on the linear solver, where most of the computational time is spent. An extremely simplistic performance model has been obtained for all fundamental parts of the Poisson’s solver. In order to solve some of the issues uncovered by the performance analysis, a new data structure has been introduced into the code, which has allowed to reduce the computational time and make the code structure itself more flexible, decoupling two fundamental concepts such as the groups of elements used for the cache blocking and the Poisson’s PCG deflation grid. Furthermore, to try and exploit modern shared memory processors, two different hybrid MPI+OpenMP models have been implemented. First, an attempt was made with a fine-grain OpenMP model, based on loop parallelisation. This model seemed particularly adapted for most of the YALES2 structure, but presented some challenges that rendered it less effective in some other key parts of the solver. In spite of the many optimisation attempts, in the end this model did not bring any improvement to the performance of the pure MPI implementation. Then, in order to overcome the issues of the fine-grain implementation, a coarse grain OpenMP model has been introduced. Mainly due to the fact that MPI libraries are internally sequentialised to maintain thread-safety, this implementation was also unfruitful. It has however allowed to introduce some modernising features to the code, such as a full thread-safety and an abstracted communication API. In conclusion, this works shows the challenges to adapt a low-Mach incompressible CFD solver such as YALES2 to the most modern architectures currently available. Despite the poor effectiveness of most of the solution proposed, several interesting issues have been raised, and many perspectives on future optimisations have been made easier thanks to the ground work laid down during this thesis on the code structure.
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.
Fichier principal
Vignette du fichier
F-GAVA.pdf (8.09 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-03670638 , version 1 (17-05-2022)

Identifiants

  • HAL Id : tel-03670638 , version 1

Citer

Francesco Gava. Optimisation of the parallel performances of a CFD solver for emerging computational platforms. Software Engineering [cs.SE]. Normandie Université, 2022. English. ⟨NNT : 2022NORMIR02⟩. ⟨tel-03670638⟩
119 Consultations
192 Téléchargements

Partager

Gmail Facebook X LinkedIn More