Experimenting task-based runtimes on a legacy Computational Fluid Dynamics code with unstructured meshes. (15th September 2018) - Jeannot, Emmanuel
Highlights: Discussion on porting a Legacy CFD code onto task-based runtime system. Porting gradient reconstruction onto StarPU and PARSEC. Comparing the PARSEC and StarPU approach. Tests on shared and distributed memory. Abstract: Advances 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.