PARA'04 State-of-the-Art
in Scientific Computing
June 20-23, 2004 (Home page)
Updated: 20 February 2004
"Oblio: Design and Performance"
Florin Dobrian and Alex Pothen
We describe Oblio, a library for solving sparse symmetric linear systems
of equations by direct methods.
The code was motivated by our need to build a framework for the quick
prototyping and testing of algorithmic ideas. As a consequence,
flexibility was a major goal. We needed a code that is easy to understand,
maintain and modify, features that that are not usually characteristic of
scientific computing software.
Traditionally, solvers are designed to be efficient, and most of the time
the design is not flexible enough to allow changes and additions. We
decided to design Oblio to be both efficient and flexible. Obviously, we
had to make trade-offs along the way.
While efficiency is generally guaranteed by the use of good algorithmic
techniques, flexibility requires modern software engineering. Dynamic
memory allocation, encapsulation, polymorphism, and templates are some of
the techniques we use.
For efficiency, Oblio calls fast dense linear algebra kernels from BLAS
and LAPACK. Except for that, the code is written entirely in C++.
Templates are used in order to solve both real and complex valued
problems.
Oblio is a supernodal solver that implements three major column-oriented
algorithms for symmetric problems: left-looking, right-looking and
multifrontal. Implementing several algorithms is not difficult due to the
flexibility of the design; code for the common subproblems can be combined
in different ways to obtain code for the three algorithms.
The flexibility of Oblio can be further illustrated by the choices it
offers. We provide three types of factorizations: two static ones for
positive definite and indefinite matrices, respectively, and a dynamic one
for indefinite matrices. In addition, three factor data structures are
available: in-core static, in-core dynamic, and out-of-core. The
implementation effort required by all the combinations between algorithms
and data structures is significantly reduced through polymorphism.
It is important to understand that, by providing all these options, we are
able to choose the algorithm, data structure, and memory management policy
that yield the best performance for a given problem, on a given
computational platform.
Several other features are of interest in Oblio. By using a dynamic data
structure for the elimination forest it is very easy to reorder for
storage optimization and to amalgamate supernodes for faster computations.
The dynamic factorization of indefinite matrices uses both 1-by-1 and
2-by-2 pivots. We can also perform iterative refinement and we can solve
systems with multiple right-hand-sides.
Oblio continues to be actively developed. Future extensions include
dynamic factorization with larger pivots as well as some static pivoting
techniques.
In this talk we discuss the major design issues that support flexibility
in Oblio and we use a set of test problems to illustrate the performance
as well as the numerical properties of the solver.
Home page
2004-02-20