Parallel Iterative Methods

Rudnei Dias da Cunha (Instituto de Matemática, UFRGS, Brazil)
Tim Hopkins (Computing Laboratory, University of Kent at Canterbury, UK)

The Parallel Iterative Methods (PIM) is a collection of Fortran 77 routines designed to solve systems of linear equations (SLEs) on parallel computers using a variety of iterative methods.

PIM offers a number of iterative methods, including

  • Conjugate-Gradients, CG (Hestenes 1952),
  • Bi-Conjugate-Gradients, BICG (Fletcher 1976),
  • Conjugate-Gradients squared, CGS (Sonneveld 89),
  • the stabilised version of Bi-Conjugate-Gradients, BICGSTAB (van der Vorst 1991),
  • the restarted version of BICGSTAB, RBICGSTAB (Sleijpen and Fokkema 1992),
  • the restarted generalised minimal residual, RGMRES (Saad 1986),
  • the restarted generalised conjugate residual, RGCR (Eisenstat 1983),
  • the normal equation solvers, CGNR (Hestenes 1952 and CGNE (Craig 1955),
  • the quasi-minimal residual, QMR (highly parallel version due to Bucker and Sauren, 1996),
  • transpose-free quasi-minimal residual, TFQMR (Freund 1992),
  • the Chebyshev acceleration, CHEBYSHEV (Young 1981).

The coefficient matrix may be either real or complex; we provide a set of the PIM routines for each, in both single and double precision.

The user may want to use preconditioners to accelerate or obtain convergence. The routines allow the use of left-, right- or symmetric-preconditioning; the system can also be solved without preconditioning.

Seven different stopping criteria are available, these include the usual scaled residual of the iteration vector at the k-th iteration and the absolute difference between two successive iteration vectors. The progress of the iterations can be monitored.

PIM was developed with two main goals

  • To allow the user complete freedom with respect to the matrix storage, access and partitioning;
  • To achieve portability across a variety of parallel architectures and programming environments.
These goals are achieved by hiding from the PIM routines the specific details concerning the computation of the following three linear algebra operations
  • Matrix-vector (and transpose-matrix-vector) product;
  • Preconditioning step;
  • Inner-products and vector norm.

PIM has already been used in a variety of applications, for example, as part of a finite-element code for designing gas turbines (Pratt & Whitney, Canada), the modelling of flux in porous media (ARCO Oil & Gas) and the modelling of geo-electromagnetic induction in the Earth (Agarwal 1994).

Supported architectures and environments

  • networks of workstations using message-passing systems (PVM 3 and MPI)
  • SGI Challenge
  • Kendall Square Research KSR1
  • Cray Y-MP2E/232
  • Cray C9016E
  • Cray T3D
  • Intel Paragon XP/S
  • Intel iPSC/860
  • IBM 9070 SP/1
  • TMC CM-5

Downloading the package...

Current version is 2.3.

To obtain a copy of the package or its User's Guide, please click one of the links below:


We would like to thank the following institutions for kindly making their facilities available for our tests
  • National Supercomputing Centre (CESUP), Brazil
  • National Laboratory for Scientific Computing (LNCC/CNPq), Brazil
  • Parallel Laboratory, University in Bergen, Norway
  • Army High Performance Computing Research Center, Minnesota, USA
  • Digital Equipment Corporation (via the Internet Alpha Program)

Thanks are also due to our collaborators, Matthias G. Imhof (MIT), Paulo Tibério M. Bulhões (Cray Research), Steve Thomas (CERCA/Montréal), Andrzej Pindor (University of Toronto, Canada), William H. Purvis (DRAL/UK) and Ramiro B. Willmersdorf (LNCC/Brazil).

This work was supported in part by the Army High Performance Computing Research Center, under the auspices of Army Research Office contract number DAAL03-89-C-0038 with the University of Minnesota.