BPKIT Block Preconditioning Toolkit

BPKIT is a toolkit of block preconditioners for the iterative solution of linear systems. The most effective general purpose and black-box type of preconditioners are available, including block SSOR, block tridiagonal ILU, and the block extension of point ILU with level-of-fill. Any of these "global" preconditioners may be coupled with one of a large collection of "local" preconditioners for approximately or exactly inverting or solving with the diagonal or pivot blocks. These include a number of approximate inverse techniques. By combining a global and local preconditioner, a wide variety of preconditionings are possible, matched to the difficulty and structure of the problem. For example, the following popular methods are possible:
The blocks may be stored in dense or sparse formats, and user-defined data structures may also be used. Variable block sizes are allowed within a matrix. Operations with the blocks call the BLAS, LAPACK, or the sparse BLAS, for efficiency across many platforms. The selection of larger blocks usually gives higher performance. BPKIT supports the preconditioning of a block of vectors, to enhance efficiency when block iterative methods are used. A flexible GMRES iterative method is provided in BPKIT for users who do not have an iterative method readily available. A test program reads any linear system in Harwell-Boeing format and solves it using any combination of preconditioners and parameters specified by the user. This is important in the "experimentation" stage when trying to solve problems from new applications. BPKIT is written in C++ and FORTRAN. BPKIT is not parallel; for parallel applications BPKIT is suitable for the local solvers used in each subdomain.

BPKIT is extensible. Local and global preconditioners may be added. A few lines of C++ must be written in order to make the new "objects" polymorphic with the others (i.e., may be treated like other local and global preconditioners). User-defined data structures for the blocks and block matrices can also be added.

The source code for BPKIT is freely provided. The software is provided "as-is" without express or implied warranty. The authors, contributors, and their institutions are not liable for any loss, damage, or inconvenience caused by the use of this software.


BPKIT was created in 1995-1996. The 2006 version is a small update to match the current C++ standard.


Edmond Chow and Michael A. Heroux, An object-oriented framework for block preconditioning (preprint), ACM Trans. Math. Softw., 24, (1998), pp. 159-183.

Edmond Chow and Michael A. Heroux, BPKIT Reference Manual, University of Minnesota Supercomputing Institute Technical Report UMSI 96/183, September 1996.

Release Notes

There are some additional resources not documented in the manual pages: HBTMat.scale (scale the HBT matrix), APINVS.print (print debugging info), ILUT.permtol (pivot tolerance for partial pivoting), ILUT.pblock (block size to use for pivoting), ILUT.stat (print ILUT statistics), BILUK.print (print debugging info).


BPKIT was created by Edmond Chow and Mike Heroux Mike Heroux (click names for contact info).

SourceForge.net Logo