To meet the great demand for performance portability, we propose a generator of parallel adaptive libraries and applications which enable codes to run efficiently on modern parallel computers that range from multicore architectures to the forthcoming petascale computing platforms. The tool's main framework will be built to make it easy to integrate adaptive libraries in general. Furthermore, a complete adaptive system will be delivered through this project by building an adaptive sparse linear system solvers.
Sparse linear system solvers are selected for this project because many science and engineering
applications give rise to large sparse systems of linear equations that need to be solved efficiently
on a variety of parallel architectures. A natural approach for the adaptation is a run-time selection
from a family of algorithms. The reason is that, there are numerous algorithms and implementations
of parallel sparse systems solvers and it is not immediately clear, not even to application experts,
which performs best on a given parallel architecture and for a given input data set. It should be
emphasized that the optimal selection of parallel routines to solve a linear systems often depends on
features such as system size or degree of sparsity that are not inmediately obvious. An important
justification of the proposed project is that the design of parallel adaptive sparse solver generators
presents new challenges. Two issues characterize this difficulty: (i) adaptation for sparse solvers will
be based on the composition of complete, usually complex algorithms instead of focusing just on
kernels, and (ii) in sparse system solvers, the characteristics of the input data influence performance
in ways that are difficult to anticipate for each particular target machine.
The envisioned tool will have three key components:
1. An extensible library of parallel routines from which the solvers will be composed.
2. A library tuner which tunes the parallel routines offline.
3. A high-level programming syntax that allows the developer to specify the sparse linear system
whose matrices and vectors are represented by self-explanatory symbols. Our programming syntax
will specify in a uniform manner what is to be done in the off-line and run-time phases.
Investigator:
Optimizing Libraries Needed by Scientific Applications Information