My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

General

Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX)1 is a package, written in C and MATLAB/OCTAVE, that includes an eigensolver implemented with the Locally Optimal Block Preconditioned Conjugate Gradient Method (LOBPCG) 2. Its main features are: a matrix-free iterative method for computing several extreme eigenpairs of symmetric positive generalized eigenproblems; a user-defined symmetric positive preconditioner; robustness with respect to random initial approximations, variable preconditioners, and ill-conditioning of the stiffness matrix; and apparently optimal convergence speed.

BLOPEX supports parallel MPI-based computations. BLOPEX is incorporated in the HYPRE package and is available as an external block to the PETSc package. SLEPc and PHAML have interfaces to call BLOPEX eigensolvers, as well as DevTools by Visual Kinematics.

BLOPEX relies on volunteers in its support and development. If you want to volunteer, which would be extremely appreciated, please drop a line to 2AndrewKnyazev@gmail.com .

How to use it

  • This code does NOT compute ALL eigenvalues. It is designed to compute no more than ~20%, i.e., if the matrix size is 100, do NOT attempt to compute more that ~20 eigenpairs, otherwise, the code will crash.
  • We do NOT provide the binaries, only the source, mostly in C, some in FORTRAN and MATLAB/OCTAVE.
  • In HYPRE, the BLOPEX code is already incorporated. Just download and compile Hypre.
  • In PETSc release 3.1, the BLOPEX code is available as an external package. Download PETSc, and use the option --download-blopex=1 in the PETSc configure, prior to PETSc compilation.
  • In PETSc release 3.2 and later, the BLOPEX code has been moved to SLEPc, where it is now available as an external package. Download and install PETSc first. Then download SLEPc, and use the option --download-blopex=1 in the SLEPc configure, prior to SLEPc make.
  • To build a stand-alone version, one needs the core of BLOPEX, which is blopex_abstract, which contains the eigenxolvers codes and can be compiled into the BLOPEX library, using the sample makefiles provided. One also needs blopex_serial_double and/or blopex_serial_complex. The current stand-alone version is for serial computations only. For parallel computations, one must use PETSc and/or Hypre.
  • An interface of our C blopex_abstract code to MATLAB (both 32 and 64 bit) is available at blopex_matlab. This interface is manly designed for testing of our C blopex_abstract code. For actual computations in MATLAB/OCTAVE, is it instead recommended to use the native MATLAB/OCTAVE code above.
  • blopex_petsc and blopex_hypre are provided for reference only since they are already in PETSc and Hypre, correspondingly.

We also provide some useful testing tools in blopex_tools/matlab :

REFERENCES:

  1. A. V. Knyazev, I. Lashuk, M. E. Argentati, and E. Ovchinnikov, Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX) in hypre and PETSc (2007). SIAM Journal on Scientific Computing (SISC). 25(5): 2224-2239, http://dx.doi.org/10.1137/060661624.
  1. A. V. Knyazev, Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method. SIAM Journal on Scientific Computing 23 (2001), no. 2, pp. 517-541. http://dx.doi.org/10.1137/S1064827500366124

This material is based upon work supported by the National Science Foundation under Grant No. 1115734. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Powered by Google Project Hosting