Introduction
Coding Examples
Documentation
Developer Information
Download


Application Examples


eigenmodes of a nuclear reactor core

SLEPc

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 solvers

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 Components

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

  • Related Tools:

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.

Tools News Home