|
Introduction
SLEPc, the Scalable Library for
Eigenvalue Problem computations,
is a software package for the solution of large sparse eigenproblems on
parallel computers. It can be used for the solution of problems
formulated in either standard or generalized form, as well as other
related problems such as the singular value decomposition.
The emphasis of the software is on methods and techniques
appropriate for problems in which the associated matrices are sparse,
for example, those arising after the discretization of partial
differential equations. Therefore, most of the methods offered by the
library are projection methods or other methods with similar
properties. Examples of these methods are Arnoldi, Subspace Iteration
and Power/RQI, to name a few. SLEPc implements these basic methods as
well as more sophisticated algorithms. It also provides built-in
support for spectral transformations such as shift-and-invert.
SLEPc is a general library in the sense that it covers standard
and generalized eigenvalue problems, both Hermitian and non-Hermitian,
with either real or complex arithmetic.
SLEPc is built on top of PETSc the Portable,
Extensible Toolkit for Scientific computation.
It can be considered an extension of PETSc providing all the
functionality necessary for the solution of eigenvalue problems. This
means that PETSc must be previously installed in order to use SLEPc.
PETSc users will find SLEPc very easy to use, since it enforces the
same programming paradigm. Users should be comfortable with PETSc
programming before proceeding with SLEPc.
The table below gives an overview of the main numerical components of PETSc and those added by SLEPc:
SLEPc interfaces to some external software packages such as
ARPACK,
BLZPACK,
PLANSO, and
TRLAN.
These are all optional packages and do not need to be installed to use
SLEPc. SLEPc is fully usable from Fortran, C and C++, and is portable, running on most UNIX systems.
SLEPc has several features that make it very convenient
for the application programmer. Users can create complete application
programs for the parallel solution of eigenvalue problems without writing
much explicit message-passing code themselves. Parallel vectors and
sparse matrices can be easily and efficiently assembled through the mechanisms
provided by PETSc. Furthermore, SLEPc enables a great deal of runtime control for the
user without any additional coding cost. The runtime options include
control over the choice of solvers, spectral transformations and
problem parameters as well as the generation of performance
logs.
Documentation
Coding Examples
| Example program | Description |
| hello.c | Hello World for SLEPc. |
| ex1.c | This example solves a standard symmetric eigenproblem Ax=!x, where A is the matrix resulting from the discretization of the Laplacian operator in 1 dimension by centered finite differences. |
| ex1f.F | Fortran version. This example solves a standard symmetric eigenproblem Ax=!x, where A is the matrix resulting from the discretization of the Laplacian operator in 1 dimension by centered finite differences. |
| ex5.c | The example solves the eigenvalue problem associated with a Markov model of a random walk on a triangular grid. Although the matrix is non-symmetric, all eigenvalues are real. Eigenvalues come in pairs with the same magnitude and different signs. The values 1 and -1 are eigenvalues for any matrix size. |
| ex7.c | In this exercise we are going to work with a generalized eigenvalue problem, Ax=!Bx. The example program loads two matrices A and B from a file and then solves the associated eigensystem. The matrices we are going to work with are BFW62A and BFW62B, which are available at Matrix Market . This particular problem is non-symmetric. Some of the eigenvalues (those of largest magnitude) come in complex conjugate pairs while the rest are real. |
| ex14.c | In this exercise we turn our attention to the Singular Value Decomposition (SVD). Remember that in real symmetric (or complex Hermitian) matrices, singular values coincide with eigenvalues, but in general this is not the case. The SVD is defined for any matrix, even rectangular. Singular values are always non-negative real values. |
| ex3.c | In many applications, it may be better to keep the matrix (or matrices) that define the eigenvalue problem implicit, that is, without storing its nonzero entries explicitly. An example is when we have a matrix-vector routine available. SLEPc allows easy management of this case. This exercise tries to illustrate it by solving a standard symmetric eigenproblem corresponding to the Laplacian operator in 2 dimensions in which the matrix is not built explicitly. |
| ex4.c | Example program with different number of processors to see how execution time is reduced. This time, we are going to solve a standard eigensystem Ax=!x with the matrix loaded from a file. In particular, the matrix we are going to use is QC2534. It is a complex matrix of order 2534 arising from a quantum chemistry application (more details can be found at Matrix Market ) |
| ex11.c | This example illustrates the use of deflation subspaces to compute the smallest nonzero eigenvalue of the Laplacian of a graph corresponding to a 2-D regular mesh. The problem is a standard symmetric eigenproblem Ax=!x, where A = L(G) is the Laplacian of graph G, defined as follows: Aii = degree of node i, Aij = -1 if edge (i,j) exists in G, zero otherwise. This matrix is symmetric positive semidefinite and singular, and [1 1 ... 1]T is the eigenvector associated with the zero eigenvalue. In graph theory, one is usually interested in computing the eigenvector associated with the next eigenvalue (the so-called Fiedler vector). |
Developer Information
SLEPc was developed by members of the
High Performance Networking
and Computing Group (GRyCAP),
in the Universidad Politecnica de Valencia (Spain).
The SLEPc team continues to enhance SLEPc with new functionality and
improved performance. Its principal developers are
Jose E. Roman and Andrés Tomás.
|