CCA Sparse Linear Solver Interface for Parallel Scientific Computing Application

Overview

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.

Proposed LISI Current Status

The proposed interface draft can be accessed from [LINK]. The implementation is purely in C++, we test Petsc's KSP linear equation solver and Aztec iterative solver, and we also develop SuperLU as the direct solver. LISI provides uniform interface for both iterative solver and direct solver. LISI provides the simple calls to get the solution of the linear system. This interface intends for build components under CCA framework and complains with CCA specification on ports and components.

Our previous interface used the following design structure:

Base interface is minimal common set of functions among iterative and direct linear solver.

  • It constructs and destructs the libraries' internal data, and set up and finalize the MPI communication world among processes.
  • It sets up distributed linear system by converting application data into libraries's internal data structure.
  • It assigns solver options in the generic way such as setInt(string key, int value).
  • It solves linear system and returns solution and solving status.
  • 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.

    Currently, we are disscussing with other parties to get the agreement on the interface.

    Related Work

    There have been some efforts on this regard since later 90's last century.

    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].

    Resources

    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.

    People

    Randall Bramley [HOME]

    Fang (Cherry) Liu [HOME]

    Publication

    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.

    Acknowledgments

    Supported in part by NSF Grant EIA-0202048 and DoE SciDAC program.


    last modified: March. 14 2007