algorithm 740; fortran subroutines to compute improved incomplete cholesky factorizations

2
Algorithm 740: Fortran Subroutines to Compute Improved Incomplete Cholesky Factorization MARK T. JONES and PAUL E. PLASSMANN Argonne National Laboratory Efficient and reliable code to compute incomplete Cholesky factors of sparse matrices for use as preconditioners in a conjugate gradient algorithm is described. This code implements two recently developed, improved incomplete factorization algorithms An efficient implementation of the standard incomplete Cholesky factorization is also included. Categories and Subject Descriptors: G.1.3 [Numerical Analysis]: Numerical Linear Algebra-linear systems; sparse and very large systems General Terms: Algorithms Additional Key Words and Phrases: Incomplete Cholesky, incomplete factorization, precondition- ers, sparse matrices 1. INTRODUCTION The Fortran functions JPICC and JPICR are efficient implementations of the column-based and row-based incomplete Cholesky factorization introduced by Jones and Plassmann [1991]. For comparison purposes, we include the Fortran function ISTDIC, an implementation of the usual incomplete Cholesky factorization [Meijerank and Van Der Vorst 1977]. The subroutines generate incomplete factorization of symmetric, positive definite sparse matrices for use as preconditioners for a conjugate gradient algorithm. A preconditioned conjugate gradient subroutine is not included; however, the preconditioners generated can easily be incorporated into an existing routine, such as the DCG routine in SLAP [Seager 1988], or a routine may be written by the user. This work was supported by the Applied Mathematical Sciences subprogram of the Office of Energy Research, U.S. Department of Energy, under contract W-3 l-109 -Eng-38. Authors’ address: Math and Computer Science Division, Argonne National Lab. 9700 South Cass Avenue, Argonne, IL 60439-4801; email: pIassman@mcs,anl. gov; [email protected], Pernnssion to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery To copy otherwme, or to repubhsh, requires a fee and/or specific permission. @ 1995 ACM 0098-3500/95/0300-0018 $03,50 ACM Transactions on Mathematical Software, Vol 21, No. 1, March 1995, Pages 18-19,

Upload: paul-e

Post on 13-Dec-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algorithm 740; Fortran subroutines to compute improved incomplete Cholesky factorizations

Algorithm 740: Fortran Subroutines toCompute Improved Incomplete CholeskyFactorization

MARK T. JONES and PAUL E. PLASSMANN

Argonne National Laboratory

Efficient and reliable code to compute incomplete Cholesky factors of sparse matrices for use aspreconditioners in a conjugate gradient algorithm is described. This code implements tworecently developed, improved incomplete factorization algorithms An efficient implementation ofthe standard incomplete Cholesky factorization is also included.

Categories and Subject Descriptors: G.1.3 [Numerical Analysis]: Numerical LinearAlgebra-linear systems; sparse and very large systems

General Terms: Algorithms

Additional Key Words and Phrases: Incomplete Cholesky, incomplete factorization, precondition-ers, sparse matrices

1. INTRODUCTION

The Fortran functions JPICC and JPICR are efficient implementations of the

column-based and row-based incomplete Cholesky factorization introduced

by Jones and Plassmann [1991]. For comparison purposes, we include the

Fortran function ISTDIC, an implementation of the usual incomplete

Cholesky factorization [Meijerank and Van Der Vorst 1977]. The subroutines

generate incomplete factorization of symmetric, positive definite sparse

matrices for use as preconditioners for a conjugate gradient algorithm. A

preconditioned conjugate gradient subroutine is not included; however, the

preconditioners generated can easily be incorporated into an existing routine,

such as the DCG routine in SLAP [Seager 1988], or a routine may be written

by the user.

This work was supported by the Applied Mathematical Sciences subprogram of the Office ofEnergy Research, U.S. Department of Energy, under contract W-3 l-109 -Eng-38.Authors’ address: Math and Computer Science Division, Argonne National Lab. 9700 South CassAvenue, Argonne, IL 60439-4801; email: pIassman@mcs,anl. gov; [email protected],Pernnssion to copy without fee all or part of this material is granted provided that the copies arenot made or distributed for direct commercial advantage, the ACM copyright notice and the titleof the publication and its date appear, and notice is given that copying is by permission of theAssociation for Computing Machinery To copy otherwme, or to repubhsh, requires a fee and/orspecific permission.@ 1995 ACM 0098-3500/95/0300-0018 $03,50

ACM Transactions on Mathematical Software, Vol 21, No. 1, March 1995, Pages 18-19,

Page 2: Algorithm 740; Fortran subroutines to compute improved incomplete Cholesky factorizations

Algorithm 740: Fortran Subroutines to Compute Cholesky Factorization . 19

2. ROUTINES

The software conforms to the 1977 ANSI standards for Fortran and has no

system dependencies. Comments in each user-callable module describe the

calling sequences. All parameter names conform to the Fortran typing de-

fault. Only a double-precision implementation is included. The modules are

as follows:

ISTDIC: An integer function that returns the standard column-oriented

incomplete Cholesky factorization.

JPICC: An integer function that returns the improved column-oriented

incomplete Cholesky factorization.

JPICR: An integer function that returns the improved row-oriented incom-

plete Cholesky factorization.

IBSORT: A subroutine that returns the K largest nonzeros from a double-

precision array that is indirectly addressed by an integer array.

DBSORT: A subroutine which performs a bubble sort on an integer array.

IHSORT: A subroutine that performs heap sort on a double-precision array

that is indirectly addressed by an integer array.

DHSORT: A subroutine that performs heap sort on an integer array.

For testing and demonstration purposes, a small sample driver is included

with the subroutines. The expected output for the driver is also included. The

user may find it beneficial to replace the sorting subroutines with ones that

have been optimized for a particular architecture.

REFERENCES

JONES,M. T. AND PLASSMANN,P. E. 1991. An improved incomplete Cholesky factorization.Preprint MCS-P206-0191, MCS Division, Argonne National Laboratory, Argonne, Ill.

MEIJERINK,J. ANDVAN DERVORST,H. A. 1977. An iterative solution method for linear systemsof which the coefficient matrix is a symmetric M-Matrix. Math. Comput. 31, 137 (Jan.),148-162.

SEAGER,M. 1988. A SLAP for the masses. Tech. Rep. UCRL-1OO267, Lawrence LivermoreNational Laboratory.

Received March 1991; revised August 1992 and December 1992; accepted December 1993

ACM Transactions on Mathematical Software, Vol. 21, No. 1, March 1995.