Implicit sparse linear solution methods are at the core of many physics and engineering models. While modern solver libraries provide excellent solution capabilities, no single library is capable of solving the full range of problems encountered today. Though largely freely available solver packages exist, they differ widely on the data structure they accept, the limitation on problem spectral, size of problem they can solve, etc.
We present a scalable sparse linear solver interface (LISI) and implementation for Petsc, Trilinos and SuperLU. LISI allows application developer to switch the linear solvers easily with very few changes on their codes. The interface is written in SIDL and implemented in C++, along with Babel, it supports language interoperability.
The goal of LISI is to provide a high abstraction above the current exist linear solver libraries. It allows application loosely tied to the library it used, and it makes library switch easy. LISI converts the application's data into linear solver packages internal data structure and application doesn't need to reconvert the data if it wants to change the linear solver they are using currently.
Our previous interface used the following design structure:
Base interface is minimal common set of functions among iterative and direct linear solver.
Iterative interface extends from Base interface and specially for iterative linear solver packages. Currently, we implement it for both Petsc's KSP linear solver and Aztec. It provides the detail solver options setup routins such as SetSolutionMethod, SetStoppingTest,SetFillLevel,SetPolyOrder,SetSteps, etc,.
Direct interface extends from Base interface and adds more methods especially for direct linear solver. The implementation for SuperLU is undergoing, more direct solver related options are added.
The current interface simplifies the interface hierarchy by one SparseSolver interface, chooses the generic parameter setup routine for both direct and iterative solver. In order to build the cca-complaint component, we design the interface by extends gov.cca.Ports and components extend from gov.cca.Component.
FEI[LINK] is a interface between finite element/finite volume codes.
ESI[LINK] is equation solver interface effort done by people from several DOE labs. It specifically addressed component objects for scalable solvers.
Tops CCA Interface [LINK] defines CCA Interface for Tops linear and nonlinear algebraic solvers [SIDL].
Ames Inteface design the CCA interface for Sparskit parkage. [SIDL].
Babel[LINK], we use Babel to generate run-time system for language interoperability.
CCA[LINK], LSI will be CCA-complied in the future so that it can be easily used by any CCA-compliant applications.
PETSC[LINK], PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations
AZTEC[LINK],AztecOO provides an object-oriented interface the the well-known Aztec solver library. Furthermore, it allows flexible construction of matrix and vector arguments via Epetra matrix and vector classes.
SuperLU[LINK],SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines.
Fang (Cherry) Liu and Randall Bramley CCA-LISI: On Designing A CCA Parallel Sparse Linear Solver Interface, ACM/IEEE 21th International Parallel and Distributed Processing Symposium (IPDPS), Long Beach California, March 2007.
Supported in part by NSF Grant EIA-0202048 and DoE SciDAC program.