6 research outputs found
Experiments with multi-level parallelism runtimes on a CFD code with unstructured meshes
International audienceLarge applications for parallel computers and more specifically unstructured Computational Fluid Dynamics codes are often based on the bulk synchronous parallelism approach (BSP model) and therefore mostly exploit parallelism using runtime systems like the Message Passing Interface (MPI) which has enabled strong, relatively portable and quite durable performances for these codes for many years. However, as MPI was developed for distributed computing, we do not expect its standalone use to be the best fit for recent many-core architectures. Indeed, the ever growing performance of high performance machines we are witnessing comes mostly through the aggregation of different computing devices in order to build heterogeneous machines. Those are the combination of traditional computing units (CPUs) with accelerators, namely many-core architectures such as GPGPUs or Intel Xeon-Phi accelerators. This hybridiza-tion of HPC clusters requires current scientific code developers to master more and more techniques and programming models in order to harness the quintessence of their machines. As the post-petascale era has long been foreseen, runtime systems developers have been investigating other parallelism paradigms. Notably, the task based approach has gained a lot of popularity recently as it is expected to deliver portability and performance with a relatively simple programming model. Tasks can be both local or distant, so a single model can handle both inter-node and intra-node aspects. In addition, computation-communication overlap is straightforward. Opposed to the Coarse Grain Parallelism, performance depends strongly on choosing a good data grain size for each task, which should require performance measuring and tuning but no additional programming effort. As Code_Saturne [1], our CFD code at EDF R&D is based on unstructured meshes, with a significant part of its code being memory-bound, refined parallelism through the use of MPI + X solutions such as MPI + OpenMP often fails to deliver significant (or any) performance improvements , though it does reduce the memory consumption per thread. Using a simple "loop-local" OpenMP model, as we increase the number of threads per MPI rank, performance drops rapidly, since many secondary loops are not threaded; and avoiding data races often requires specific re-numbering strategies, which may not be easily adapted everywhere with a reasonable programming effort. These diminishing returns tend to limit the efforts which are worthwhile to spend in addition to the base MPI model. We may see HPC current technologies evolution as unfavorable to an unstructured CFD code like Code_Saturne in its current form. This is why we decided to investigate recent HPC techniques and runtime systems for a sustainable, easy to propagate, portable and efficient solution to bring better performance and adaptability to Code_Saturne. As many teams are already dedicating their work to propose new solvers and solve dense linear algebra, we decided to focus on another part of the puzzle, namely our gradient reconstruction computation. As a significant portion of our main current numerical schemes, it has a high impact over the performance of our code and an intermediate computational intensity. As such, we propose in this article a review of different implementations of our gradient computation towards the implementation of a task based approach through the use of task-based HPC runtime systems, and more specifically the PaRSEC [2] framework. The Parallel Runtime Scheduling and Execution Control (PaRSEC) framework implements a task-based dataflow-driven programming model aimed at offering high performance while relieving developers of supercomputers' hardware complexity. We show that our first implementation offers comparable performance while increasing the arithmetic intensity of its computation (see figure 1). Moreover, by removing some data dependencies , our cell based approach paves the way for a more refined grain parallelism approach. We then push this approach to our prime objective – task based approaches – and implement our gradient computation using the PaRSEC runtime. Finally, we propose some insights on the use of
Experimenting task-based runtimes on a legacy Computational Fluid Dynamics code with unstructured meshes
International audienceAdvances in high performance computing hardware systems lead to higher levels of parallelism and optimizations in scientific applications and more specifically in computational fluid dynamics codes. To reduce the level of complexity that such architectures bring while attaining an acceptable amount of the parallelism offered by modern clusters, the task-based approach has gained a lot of popularity recently as it is expected to deliver portability and performance with a relatively simple programming model. In this paper, we review and present the process of adapting part of Code Saturne, our legacy code at EDF R&D into a task-based form using the PARSEC (Parallel Runtime Scheduling and Execution Control) framework. We show first the adaptation of our prime algorithm to a simpler form to remove part of the complexity of our code and then present its task-based implementation. We compare performance of various forms of our code and discuss the perks of task-based runtimes in terms of scalability, ease of incremental deployment in a legacy CFD code, and maintainability
Improving performance of a CFD code with unstructured meshes through multi level parallelism
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
Amélioration des performances via un parallélisme multi-niveaux en maillage sur un code de CFD en maillages non structurés
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.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
Improving performance of a CFD code with unstructured meshes through multi level parallelism
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
Amélioration des performances via un parallélisme multi-niveaux en maillage sur un code de CFD en maillages non structurés
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.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