The ExaStencils consortium consists of six research groups at four locations:
The central goal of ExaStencils is to develop a radically new software technology for applications with exascale performance. To reach this goal, the project focusses on a comparatively narrow but very important application domain. The aim is to enable a simple and convenient formulation of problem solutions in this domain. The software technology developed in ExaStencils shall facilitate the highly automatic generation of a large variety of efficient implementations via the judicious use of domain-specific knowledge in each of a sequence of optimization steps such that, at the end, exascale performance results.
The application domain chosen is that of stencil codes, i.e., compute-intensive algorithms in which data points in a grid are redefined repeatedly as a combination of the values of neighboring points. The neighborhood pattern used is called a stencil. Stencil codes are used for the solution of discrete partial differential equations and the resulting linear systems.The domain-specific optimization proceeds in five major steps:
In a first step, the formulation of the mathematical algorithm is being optimized for efficiency and scalability. This happens via a precise specification of the variabilities of operators and solutions approaches, customized for the application problem and execution platform at hand.
Next, the on-paper solution is being converted to an abstract but executable domain-specific programming language (DSL) in which the major attributes of the solution can be specific easily.
In a third step, software product-line technology is being used to exploit the similarities of stencil codes for different applications. This way, a stencil code need not be developed from scratch since it is not being viewed as an individual but as a member of a product line, which is determined by the choice of its variants. The implementation of the stencil code then proceeds automatically by composing its attributes, bringing domain-specific optimizations to bear that are customized for the special nature and requirements of the application at hand.
Next, the polyhedron model of loop parallelization is being employed to optimize the stencil code for a given cost function. This helps to maximize the performance and scalability of the code by calibrating influences like parallelism, memory consumption and communication volume.
Last, the individual characteristics of the execution platform will be taken into account in order to avoid unnecessary reductions in performance. Special consideration will be given to the heterogeneity of future exascale architectures.
The project pursues an external DSL approach in order not to be constrained by a host language in the pursuit of exascale performance. Case studies shall contrast this with an approach embedded in a JVM-based host language in order to evaluate the trade-off between performance and productivity.
Two initial ExaStencils case studies were in quantum chemistry and the simulation of non-Newtonian fluids. Further applications in the multigrid domain are feasible.
Recent post on ScienceNode: How to liberate scientists from writing code