SLEPc

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.

source : http://acts.nersc.gov/slepc/

Versions installées

  • 3.7.3 dépend de PETSc 3.7.3

Utilisation

Il faut charger le modules nécessaires :

$ module numlib/slepc/3.7.3

Prenons un exemple simple 'HelloWorld'' :

hello.c
static char help[] = "Simple Hello World example program in SLEPc\n";
 
#include "slepceps.h"
 
#undef __FUNCT__
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
  int ierr;
 
  SlepcInitialize(&argc,&argv,(char*)0,help);
 
  ierr = PetscPrintf(PETSC_COMM_WORLD, "Hello world\n");
 
  CHKERRQ(ierr);
 
  ierr = SlepcFinalize();
 
  CHKERRQ(ierr);
 
  return 0;
}

Pour compiler on utilise le makefile générique suivant :

Makefile
hello: hello.o chkopts
        -${CLINKER} -o hello hello.o ${SLEPC_LIB}
        ${RM} hello.o
 
include ${SLEPC_DIR}/conf/slepc_common
make hello

Documentation en local : $SLEPC_DIR/docs

SLEPc website