Improving performance of a CFD code with unstructured meshes through multi level parallelism

Abstract

L'évolution constante ainsi que la complexification qui s'en suit des architectures matérielles oblige les personnes développant des codes de simulations scientifiques à une mise à jour perpétuelle de leur logiciel et de leurs connaissances afin de maintenir une bonne exploitation des performances de ces plateformes de calcul. L'hétérogénéité récente de ces plateformes et la multiplication du nombres de coeurs par machine posent notamment une nouvelle problématique aux logiciels largement parallélisés via l'utilisation de la bibliothèque d'échange de message MPI, qui se voient perdre en performance au fur et à mesure de l'augmentation du parallélisme local à exploiter. Pour cs,la transition vers l'exploitation d'un parallélisme hybride via l'association de MPI avec Open MP (en parallélisme de boucles) peine à s'imposer et ne résout pas les soucis de passage à l'échelle causé par un manque d'équilibrage de charge. Pour répondre à ce problème (ainsi que ceux de la portabilité d'un code et sa capacité à exploiter les plateformes hétérogènes),l'utilisation de la programmation par tâches a récemment gagné en popularité à travers trois méthodes: parallélisme par boucle, tâches soumises de manière séquentielle (STF, flux de tâche séquentiel) ou paramétrique (PTG: graphe de tâches paramétré). Cette thèse se concentre sur l'effort de transition de cs, un code de simulation en mécanique des fluides sur maillages non structurés (algèbre linéaire creuse) vers l'utilisation d'un support exécutif à base de tâches. Pour se faire, une évaluation des deux derniers paradigmes est proposée via l'utilisation des supports Star PU et PaRSEC. Nous établissons leur intérêt pour l'évolution d'un code tel que cs comparé à l'utilisation de MPI+Open MP et nous les comparons sur des questions de complexité et de performance avec l'existant dans cs. Cette thèse est une collaboration entre le département MFEE de EDF R&D et l'équipe Tadaam qui met en commun Inria Bordeax Sud-Ouest, le LaBRI, l'Université de Bordeaux 1 et Bordeaux INP.The ever-evolving and ultimately complexification of computer architectures enforce scientific developpers to maintain both their software and technical knowledge in order to pertain their ability to fully exploit recent high performance computing platforms. Moreover the birth of heterogeneous plateforms and the large increase in core number per processor lead developpers of software parallelized through distributed paralleslim to see a small but consistent decrease of performance on recent plateforms. For cs, the transission from a full MPI code to a MPI+OpenMP code is not fully satisfying and cannot adress the scalability issue that alack of load balancing causes. This load balancing issue is a complex problemto solve for a code such as cs where partitionning is a NP problem and mustdata being indexed due to the unstructured nature of the meshes used. To solvethis kind of issue and many others (such as portability and heterogeneity), the use of a task based runtime recently won popularity through three different ways: loop parallelism, sequential submission of task(STF) or parameterized task graph (PTG). This thesis is focused on the transition effort of cs, a computational fluid dynamic (CFD) code with unstructured meshes (sparse linear algebra) from a mostly distributed parallelism to the integration of a task based runtime. In order to do this,we investigated the STF and PTG paradigms through the use of StarPU and PaRSECin cs. We demonstrate their advantages over a solution such that MPI + OpenMP as well ascompare their use in terms of complexity and performance with the existing solutions in cs. This thesis was made through the collaboration between the MFEE department of EDF R&D and the Tadaam research team, grouping Inria Bordeaux Sud-Ouest, the LaBRI,University of Bordeaux 1 and Bordeaux INP

    Similar works

    Full text

    thumbnail-image

    Available Versions