Next: Calling Sequences
Up: PCG: A Software Package
Previous: Introduction
Some of the specific features of the package are:
- (i)
- Iterative Methods.
A wide variety of iterative methods are provided, such as
the conjugate gradient method, the biconjugate gradient and QMR algorithms,
and restarted GMRES.
- (ii)
- Preconditioners.
The current version of the package supports several parallel preconditioners,
including variants of point and block Jacobi. A wider variety of
preconditioners is in the process of being added to the package.
- (iii)
- Matrix Formats.
The current release of the package supports a builtin matrix format for
regular structured grids. Future releases of the package will contain
formats for arbitrary sparse unstructured matrices. User-defined formats
may be used as well.
- (iv)
- Levels of Access.
The package has several layers of access.
The simplest means of access is by a top-level or ``black box'' call,
using one of the available predefined package sparse matrix formats.
Alternatively, the package can be called at the level of the iterative
method with a direct communication interface, for which the user
provides subroutines to perform the matrix-vector product and
preconditioner kernel operations for a user-defined matrix format.
Finally, a reverse communication layer allows greater user control of the
iterative process by permitting more general forms of the
matrix-vector product and preconditioning operations.
- (v)
- Preprocessing Options.
Several matrix preprocessing options are available with the top-level
access mode. These options can be used to improve the linear solution process,
by means such as diagonal matrix scaling.
- (vi)
- Differing Precisions and Arithmetics.
All package routines are available in single and double precision and
real and complex arithmetic versions.
The LINPACK/LAPACK subroutine naming conventions are followed, by which the
first letter of the routine denotes the desired arithmetic and precision
(s=single real, d=double real,
c=single complex, z=double complex).
- (vii)
- Modularity.
The user is allowed to utilize any combination of preconditioner,
iterative method, matrix format, arithmetic, precision and machine type to
solve the given problem.
- (viii)
- Solution of Multiple Systems.
The package may be used to solve a series of linear systems efficiently by
reuse of the calculated preconditioner.
This is particularly useful for the solution of time-dependent partial
differential equations (PDE's) and certain nonlinear problems, for example.
- (ix)
- High Performance.
Considerable effort has been directed to optimizing the package to give
high performance on particular parallel machines.
- (x)
- Portability.
Besides a generic Fortran 77 version, optimized Fortran versions for
specific parallel machines are provided, which have as nearly as possible
the same user interface across machines.
The following machines and compilers are currently supported for the PCG
package:

Next: Calling Sequences
Up: PCG: A Software Package
Previous: Introduction