Presenter: Phil Colella (Lawrence Berkeley National Laboratory)
Title: Motif-based programming systems and numerical PDE
Abstract: Motif-Based Software Systems for High-Performance Scientific Computing.
A motif is a class of simulation capabilities whose performance-critical sections can be described in
terms of the composition of a small set of high-level mathematical/algorithmic abstractions. Examples
of motifs in simulating physical systems include structured grids, unstructured grids, dense linear algebra, sparse linear algebra, discrete Fourier transforms, particles, and Monte Carlo. The way simulation codes are traditionally designed is to express the algorithm in terms of a motif-based high-level description, which is then translated into a program, written by human developers, in a general-purpose programming language. Traditional performance engineering involves identifying and measuring critical sections, and using the developers' understanding of the algorithm, use cases and computer architecture, to find a new representation in terms of a (usually larger) number of motif operations, which is then written in the general-purpose language. This strategy has served us well. However, obtaining the best possible performance leads to large code relative to the size of the initial high-level specification. Furthermore, the detailed form of the high-performance code, as well as the choice of the section that must be transformed, depends on the details of the application, including build-time information, such as the size of the inputs / outputs and of the architecture and the supporting software system of the system that the code is to run on. This renders performance engineering by human programmers prohibitively expensive, and requires substantial rewriting every time there is a major change in HPC computer systems, e.g. the transition
from CPUs to CPUs + GPUs.
We are attempting to automate the most onerous parts of the process described above, initially for the structured grid and FFT motifs. At the top level, we are designing an embedded domain-specific languages for expressing the motif-based algorithms, expressed in terms of library calls implemented in the general-purpose target language. Performance-critical sections are subjected by the software system to a series of transformations that improve the performance of the code. Ultimately, this process produces a higher-performance version of the code section, written in the target language, that replaces the performance-critical section in the complete application. There are a number of
technological advances that we have been able to exploit to build these systems. We use Spiral, a symbolic analysis and code generation software system originally developed at Carnegie Mellon University, to perform symbolic analysis, algorithmic transformations, and code generation. Other advances include the availability of run-time compilation to allow us to present
a user interface that looks like a library interface that is invoked at run time; and advances in the generic programming capabilities in C++ using templates.
We will give an overview of how these methods have been working for CPU+GPU architectures. In particular, we will discuss a CFD application we have been developing using our structured-grid motif library: a space weather simulation capability, using a fourth-order accurate finite-volume discretization for nonlinear MHD on a cubed-sphere grid.