Assembling a High-Productivity DSL for Computational Fluid Dynamics

As we move towards exascale computing, an abstraction for effective parallel computation is increasingly needed to overcome the maintainability and portability of scientific applications while ensuring the efficient and full exploitation of high-performance systems. These circumstances require computer and domain scientists to work jointly toward a productive working environment. Domain specific languages address this challenge by abstracting the high-level application layer from the final, complex parallel low-level code. Saiph is an innovative domain specific language designed to reduce the work of computational fluid dynamics domain experts to an unambiguous and straightforward transcription of their problem equations. The high-level language, domain-specific compiler and underlying library are enhanced to make applications developed by scientists intuitive. Additions and improvements are presented, designed for the significant advantage of running computational fluid dynamics applications on different machines with no porting or maintenance issues. Numerical methods and parallel strategies are independently added at the library level covering the explicit finite differences resolution of a vast range of problems. Depending on the application, a specific parallel resolution is automatically derived and applied within Saiph, freeing the user from decisions related to numerical methods or parallel executions while ensuring suitable computations. Through a list of benchmarks, we demonstrate the utility and productivity of the Saiph high-level language together with the correctness and performance of the underlying parallel numerical algorithms.

[1]  Eduard Ayguadé,et al.  Saiph: Towards a DSL for High-Performance Computational Fluid Dynamics , 2018, RWDSL2018.

[2]  Eric Darve,et al.  Liszt: A domain specific language for building portable mesh-based PDE solvers , 2011, 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[3]  J. Bates,et al.  Multiply-Upstream, Semi-Lagrangian Advective Schemes: Analysis and Application to a Multi-Level Primitive Equation Model , 1982 .

[4]  Kamy Sepehrnoori,et al.  A high-resolution finite-difference scheme for nonuniform grids , 1995 .

[5]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[6]  Anders Logg,et al.  Automated Solution of Differential Equations by the Finite Element Method: The FEniCS Book , 2012 .

[7]  Gihan R. Mudalige,et al.  Auto-vectorizing a large-scale production unstructured-mesh CFD application , 2016, WPMVP '16.

[8]  Barbara Chapman,et al.  Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation) , 2007 .

[9]  Aleksandar Jemcov,et al.  OpenFOAM: A C++ Library for Complex Physics Simulations , 2007 .

[11]  Roumen Anguelov,et al.  Total variation diminishing nonstandard finite difference schemes for conservation laws , 2010, Math. Comput. Model..

[12]  Christophe Geuzaine,et al.  Gmsh: A 3‐D finite element mesh generator with built‐in pre‐ and post‐processing facilities , 2009 .

[13]  James A. Warren,et al.  FiPy: Partial Differential Equations with Python , 2009, Computing in Science & Engineering.

[14]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[15]  C. Angelopoulos High resolution schemes for hyperbolic conservation laws , 1992 .

[16]  Christina Freytag,et al.  Using Mpi Portable Parallel Programming With The Message Passing Interface , 2016 .

[17]  P. Colella Multidimensional upwind methods for hyperbolic conservation laws , 1990 .

[18]  Simon McIntosh-Smith,et al.  The OPS Domain Specific Abstraction for Multi-block Structured Grid Computations , 2014, 2014 Fourth International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing.

[19]  Barbara Chapman,et al.  Using OpenMP - portable shared memory parallel programming , 2007, Scientific and engineering computation.

[20]  Lawrence Mitchell,et al.  PyOP2: A High-Level Framework for Performance-Portable Simulations on Unstructured Meshes , 2012, 2012 SC Companion: High Performance Computing, Networking Storage and Analysis.

[21]  R. LeVeque Finite Volume Methods for Hyperbolic Problems: Characteristics and Riemann Problems for Linear Hyperbolic Equations , 2002 .

[22]  Chi-Wang Shu,et al.  Total variation diminishing Runge-Kutta schemes , 1998, Math. Comput..

[23]  Alejandro Duran,et al.  Ompss: a Proposal for Programming Heterogeneous Multi-Core Architectures , 2011, Parallel Process. Lett..

[24]  Massimiliano Culpo - ri . eu Partnership for Advanced Computing in Europe Current Bottlenecks in the Scalability of OpenFOAM on Massively Parallel Clusters , 2012 .

[25]  Martin Odersky,et al.  Scala-virtualized , 2012, PEPM '12.

[26]  Martin Odersky,et al.  Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs , 2010, GPCE '10.