The PCG package is a software library of routines for solving sparse linear systems of equations by preconditioned conjugate gradient iterative methods on scalar, vector and parallel computers and workstation networks.
The solution of very large sparse systems of linear equations is a frequent and intensive computational task on massively parallel computers. However, the development of high performance transportable iterative software for these machines is difficult, due to various factors. First, there is no universally agreed-upon language or programming model for these machines. Most parallel machines support either a shared memory, data parallel or message passing variant of Fortran, and significant differences exist even within these categories. Apart from this factor, porting existing iterative software to parallel machines requires substantial modification in order to manage the parallel resources adequately and provide the user sufficient flexibility to solve problems having widely differing data distributions. Furthermore, current limitations in compiler technology often make it necessary for software packages to use machine-specific libraries or assembly language for computation-intensive kernels. The goal of the PCG project is to address these issues.
The PCG package solves systems of equations of the form
or, alternatively, preconditioned systems of the form
(
,
,
square, nonsingular), by use of iterative methods.
The PCG software is in some respects similar to previous iterative
packages for scalar or vector machines, such as ITPACK 2C [8], NSPCG [7],
PCGPACK [9] and SLAP [10]. However, it is revised to include more up-to-date
algorithms and improved functionality as well as the necessary adaptations
to provide high performance, portability and ease of use on parallel computers.