FEAST Library Package

Current status:
  • Standard or Generalized Hermitian and non-Hermitian eigenvalue problems (left/right eigenvectors and bi-orthonormal basis);
  • Polynomial eigenvalue problems such as quadratic, cubic, quartic, etc. (left/right eigenvectors);
  • Finding eigenpair within a search contour (normal mode); Finding extreme eigenvalues (lowest/largest) for sparse Hermitian systems;
  • Real/Complex arithmetic and mixed precision (single precision operations leading to double precision final results);
  • Two libraries: SMP version (one node), and MPI version (multi-nodes);
  • Reverse communication interfaces (RCI).
  • Driver interfaces for dense (using LAPACK), banded (using SPIKE), and sparse-CSR formats (using MKL-PARDISO);
  • IFEAST- FEAST w/o factorization for sparse-CSR drivers (using BiCGStab);
  • PFEAST- FEAST using 3 levels of MPI parallelism for HPC (MPI solvers includes MKL-Cluster- PARDISO and PBiCGStab); Sparse and RCI interfaces compatible with local row-distributed data.
  • A set of flexible and useful practical options (quadrature rules, contour shapes, stopping criteria, initial guess, fast stochastic estimates for eigenvalue counts, etc.)
  • Portability: FEAST routines can be called from any Fortran or C codes.
  • FEAST interfaces only require (any optimized) LAPACK and BLAS packages.
  • Large number of driver examples, utility routines, and documentation.

FEAST Algorithm

Some of the important capabilities of the FEAST algorithm can be briefly outlined as follows:
  • High robustness with fast convergence to very high accuracy
  • Naturally captures all multiplicities
  • No-(explicit) orthogonalization procedure on long vectors
  • Reusable subspace - can benefit from suitable initial guess for solving series of eigenvalue problems that are close one another
  • Ideally suited for large sparse systems- allows the use of iterative methods.
  • Can exploit natural parallelism at three different levels:
    • L1. search intervals can be treated separately (no overlap);
    • L2. linear systems can be solved independently across the quadrature nodes of the complex contour;
    • L3. each linear system with multiple right-hand-sides can be solved in parallel.
    Parallel resources can be placed at all three levels simultaneously in order to achieve scalability and optimal use of the computing platform. Within a parallel environment, the main numerical task can be reduced to the solution of a single linear system using direct or iterative parallel solvers.