SLEPc, the Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large, sparse eigenproblems on parallel computers. It can be used for the solution of linear eigenvalue problems formulated in either standard or generalized form, both Hermitian and non-Hermitian, with either real or complex arithmetic, as well as other related problems such as the singular value decomposition or the nonlinear eigenvalue problem.

SLEPc focuses on sparse problems, for example, those arising after the discretization of partial differential equations. It provides projection methods or other methods with similar properties, such as Krylov-Schur or Jacobi-Davidson. It also provides built-in support for different types of problems and spectral transformations such as the shift-and-invert technique.

SLEPc is built on top of PETSc (Portable, Extensible Toolkit for Scientific Computation) and extends it with all the functionality necessary for the solution of eigenvalue problems.

Linear Eigensolvers

Parallel Solution of Large-scale Sparse Linear Eigenvalue Problems
Ax=λx        Ax=λBx

The solvers for linear eigenvalue problems currently provided by SLEPc are the following:

Nonlinear Eigensolvers

Polynomial and General Nonlinear Eigenproblems
P(λ)x=0        T(λ)x=0

Apart from the linear eigenvalue solvers, SLEPc also provides specific solvers for nonlinear eigenvalue problems, either polynomial (PEP) or general nonlinear (NEP).

We provide several Krylov subspace methods specific for the polynomial eigenvalue problem, mainly Q-Arnoldi (and derivatives thereof) and a polynomial Jacobi-Davidson. It is also possible to linearize the polynomial problem and use any of the above mentioned linear eigensolvers.

For general nonlinear eigenproblems, the user provides the nonlinear function T(·) either by means of callback routines or in split form (matrices combined with simple nonlinear functions). So far, the following solvers are available:

Solvers for SVD and Matrix Functions

Partial SVD and Matrix Function
Av=σu        w=f(αA)v

In addition to eigensolvers, SLEPc includes functionality for computing the partial singular value decomposition (SVD) of a large sparse rectangular matrix, and also for computing the action of the function of a large sparse matrix on a vector (MFN).

For the computation of singular values and vectors, any of the above mentioned linear eigensolvers can be used, together with some specific SVD solvers such as Lanczos and thick-restart Lanczos bidiagonalization.

Regarding the matrix function computation, currently only the matrix exponential is supported. SLEPc currently contains only a basic Krylov method for this.


Command-line Examples

The following examples illustrate the use of a SLEPc program via command-line options. All options are also available with an equivalent programmatic interface.

$ ./exeps -eps_view -eps_monitor
$ ./exeps -eps_type krylovschur -eps_smallest_real
$ ./exeps -eps_type lanczos -eps_nev 6 -eps_ncv 24
$ ./exeps -eps_type krylovschur -eps_nev 100 -eps_mpd 40
$ ./exeps -eps_type arnoldi -eps_tol 1e-8 -eps_max_it 2000
$ ./exeps -eps_type gd -eps_gd_plusk 1
$ ./exeps -eps_type jd -eps_jd_blocksize 2 -eps_jd_krylov_start
$ ./exeps -eps_type subspace -eps_hermitian -log_summary
$ ./exeps -eps_type arpack -eps_plot_eigs -draw_pause -1

$ ./exeps -eps_target 2.1
$ ./exeps -eps_target 2.1 -eps_harmonic 
$ ./exeps -eps_target 2.1 -st_type sinvert

$ ./exsvd -svd_type trlanczos -svd_nsv 4
$ ./exsvd -svd_type cross -svd_cross_eps_type krylovschur -svd_smallest -svd_monitor_lg -svd_ncv 30

$ ./expep -pep_nev 6 -pep_tol 1e-5
$ ./expep -pep_type linear -pep_linear_cform 1 -pep_linear_explicitmatrix
$ ./expep -pep_type toar