ARPACK - Arnoldi Package for sparse Eigenvalue Problems

Introductory Remarks

ARPACK is a collection of Fortran77 subroutines designed to solve large-scale eigenvalue problems.

The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse or structured matrices A where structured means that a matrix-vector product w ← Av requires order n rather than the usual order n2 floating-point operations. This software is based upon an algorithmic variant of the Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When matrix A is symmetric it reduces to a variant of the Lanczos process called the Implicitly Restarted Lanczos Method (IRLM). These variants may be viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly Shifted QR technique that is suitable for large-scale problems. For many standard problems, a matrix factorization is not required. Only the action of the matrix on a vector is needed.

ARPACK software is capable of solving large-scale symmetric, nonsymmetric, and generalized eigenproblems from significant application areas. The software is designed to compute a few (k) eigenvalues with user specified features such as those of the largest real part or largest magnitude. Storage requirements are on the order of n*k locations. No auxiliary storage is required. A set of Schur basis vectors for the desired k-dimensional eigenspace is computed which is numerically orthogonal to working precision. Numerically accurate eigenvectors are available on request.

Installations and Usage of ARPACK

A parallel version of ARPACK ( called PARPACK), is available. Parallel functionality is based on MPI. The following module stack is supported:

  • MPI-based version on all HPC systems,

            module load arpack-ng  

    after which you link your application with

            mpif90 -o myprog.exe <objects>
    

Notes:

  1. The location of Arpack & Parpack libraries are prepended to the LD_LIBRARY_PATH variable on loading the Arpack module. For linking purely serial (i.e., non-MPI) applications, you may want to link against "libarpack.so". In this case, the mpif90 the wrapper can be replaced by a call to ifort.

  2. All module stacks require the fortran module and an MPI environment to be loaded (one of these is usually contained in the default list of modules, depending on which system you logged in to). The MKL module is for the most part only required if your matrix-vector multiplication implementation (or another part of your program) contains BLAS/LAPACK calls.

  3. By default, MKL may also run multi-threaded. You can set MKL_SERIAL=yes or link a sequential mkl library to enforce single-threaded operation.

Documentation

  • Home page for the original ARPACK (version 96) on the Web. This version is not supported anymore.

  • Development of ARPACK is continued through the ARPACK-NG project.
  • User's Guide to ARPACK

The ARPACK and PARPACK source packages, downloadable from the locations given above, also contain some example programs (for both the serial and parallel cases).