Skip to Main content Skip to Navigation

A Domain Specific Embedded Language in C++ for lowest-order methods for diffusive problem on general meshes

Abstract : Industrial simulation software has to manage: (i) the complexity of the underlying physical models,usually expressed in terms of a PDE system completed with algebraic closure laws, (ii) the complexity of numerical methods used to solve the PDE systems, and finally (iii) the complexity of the low level computer science services required to have efficient software on modern hardware. Robust and effective finite volume (FV) methods as well as advanced programming techniques need to be combined in order to fully benefit from massively parallel architectures (implementation of parallelism, memory handling, design of connections). Moreover, the above methodologies and technologies become more and more sophisticated and too complex to be handled only by physicists. Nowadays, this complexity management becomes a key issue for the development of scientific software.Some frameworks already offer a number of advanced tools to deal with the complexity related to parallelism in a transparent way. Hardware complexity is hidden and low level algorithms which need to deal directly with hardware specificity, for performance reasons, are provided. They often offer services to manage mesh data services and linear algebra services which are key elements to have efficient parallel software. A new consistent unified mathematical frame has recently emerged and allows a unified description of a large family of lowest-order methods. This framework allows then, as in FE methods, the design of a high level language inspired from the mathematical notation, that could help physicists to implement their application writing the mathematical formulation at a high level, hiding the complexity of numerical methods, while low level computer science services ensure the efficiency. We propose to develop a language based on that frame, embedded in the C++ language, approach, zltrzdy used used in projects like Feel++ or Sundance. We present the mathematical framework that enables us to describe a wide family of lowest order methods including multiscale methods based on lowest order methods. We propose a DSEL developed on top of Arcane platform, based on the concepts presented in the unified mathematical frame and on the Feel++ DSEL. We present the C++ representations of these mathematical concepts, which are the foundation for the user-friendly interface, the front-end of a specific language which conceals most of the implementation details and allows the numerician to focus on discretization methods. The DSEL is implemented with the Boost.Proto library, a powerful framework to build a DSEL in C++ in a declarative way, which provides a collection of generic concepts and metafunctions that help to design a DSL, its grammar and tools to parse and evaluate expressions. We provide several numerical examples to assess the performance of the proposed approach.We propose an extension of the computational framework to mutiscale methods. We focus on the capability of our approach to handle complex methods based on the basic bricks of the framework and to describe and implement new methods assembling them. We validate our approach with multiscale methods with several numerical examples. We extend our approach to the runtime system layer providing an abstract layer that enable our DSEL to generate efficient code for heterogeneous architectures. We validate the design of this layer by benchmarkingthe multiscale method. This method provides a great amount of independent computations and is therefore the kind of algorithms that can take advantage efficiently of new hybrid hardware technology. Finally we benchmark various complex applications and study the performance
Complete list of metadatas

Cited literature [72 references]  Display  Hide  Download
Contributor : Jean-Marc Gratien <>
Submitted on : Thursday, January 9, 2014 - 11:42:01 AM
Last modification on : Tuesday, January 22, 2019 - 3:51:42 PM
Long-term archiving on: : Thursday, April 10, 2014 - 3:00:17 PM


  • HAL Id : tel-00926232, version 1



Jean-Marc Gratien. A Domain Specific Embedded Language in C++ for lowest-order methods for diffusive problem on general meshes. Distributed, Parallel, and Cluster Computing [cs.DC]. Université de Grenoble, 2013. English. ⟨tel-00926232⟩



Record views


Files downloads