Documentation available in the distribution. Also here in   pdf
PRIMME is a C99 library to find a number of eigenvalues and
their corresponding eigenvectors of a Real Symmetric, or Complex Hermitian
Singular values and their singular vectors of any square or rectangular matrix can also
be computed (as of version 2.0).
Preconditioning and finding largest, smallest or interior
eigenvalues/singular values is supported.
PRIMME is a multimethod eigensolver.
Based on the Davidson/Jacobi-Davidson main iteration, it can transform to most
known preconditioned eigensolvers by the appropriate choice of parameters.
Preset methods are also provided, including the nearly optimal eigensolvers
GD+k and JDQMR (see [1, 2]).
Under DYNAMIC method, the software alternates between DEFAULT_MIN_TIME
and DEFAULT_MIN_MATVECS to estimate the parameters of a cost model,
and identify the method that minimizes execution time for the given problem.
A multi-layer user interface allows efficient use by
non-expert end-users, and a powerful experimentation testbed for
eigenvalue research experts.
PRIMME is both parallel and sequential, based on an SMPD type
of parallelization. In addition, multithreaded matrix-vector and BLAS libraries
can be used.
PRIMME has many features such as blocking, locking,
locally optimal restarting, and a host of others that make it
extremely robust and efficient.
Full interface to MATLAB, Fortran77, and Python is provided.
The software has been tested extensively on a variety of architectures,
systems, and applications.
Changes in Version 2.0
Changed license to BSD 3-clause.
New support for singular value problems.
New support for float and complex float arithmetic.
Support for problem dimensions larger than 2^31, without requiring BLAS and LAPACK compiled with 64-bits integers.
Improved robustness and performance for interior problems; implemented advanced refined and harmonic-Ritz extractions.
Python interface compatible with NumPy and SciPy Library.
Fixed wrong symbols in libdprimme.a and libzprimme.a.
primme_set_method sets JDQMR instead of JDQMR_ETol for preset methods
DEFAULT_MIN_TIME and DYNAMIC when seeking interior values.
Fixed compilation of driver with a PETSc installation without HYPRE.
Included the content of the environment variable INCLUDE for compiling the driver.
Changes in Version 1.2.1
MATLAB interface to full PRIMME functionality.
Support for BLAS/LAPACK with 64bits integers (-DPRIMME_BLASINT_SIZE=64).
Simplified configuration of Make_flags and Make_links (removed TOP variable
and replaced defines NUM_SUM and NUM_IBM by F77UNDERSCORE).
Replaced directories DTEST and ZTEST by TEST that has:
(a) driver.c: read matrices in MatrixMarket format and PETSc binary and call PRIMME with the parameters specified in a file;
support complex arithmetic and MPI and can use PETSc preconditioners.
(b) ex*.c and ex*.f: small, didactic examples of usage in C and Fortran and in parallel (with PETSc).
Fixed a few minor bugs and improved documentation (especially the F77 interface).
Using Sphinx to manage documentation.
Changes in Version 1.2
Version 1.2 implements performance improvements and bug fixes that have been
reported over the years by PRIMME's users, who the authors are indebted to.
A Fortran compiler is no longer required for building the PRIMME library.
Fortran programs can still be linked to PRIMME's F77 interface.
Fixed some uncommon issues with the F77 interface
PRIMME can be called now multiple times from the same program.
Performance improvements in the QMR inner solver, especially for
Fixed a couple of bugs with the locking functionality.
In certain extreme cases where all eigenvalues of a matrix were needed.
The order of selecting interior eigenvalues.
The above fixes have improved robustness and performance.
PRIMME now assigns unique random seeds per parallel process
for up to 4096^3 (140 trillion processes)
For the DYNAMIC method, fixed issues with initialization and
synchronization decisions across multiple processes.
Fixed uncommon library interface bugs, coordinated better the
set_method() and the user setting of parameters, and improved
the interface in the sample programs and makefiles
Version 1.2.2 (Oct 13, 2015)
Version 1.2.1 (Sep 7, 2015)
Version 1.2 (Dec 24, 2014)
Version 1.1 (October 2006)
Besides comments left on GitHub, consider contacting the developers with questions, bug reports, or requests.
Contact: ANDREAS at CS dot WM dot EDU
The following papers describe the research that has led to this software.
To cite PRIMME, please cite papers [1, 2].
The work has been supported by a number of grants from the National Science Foundation.
Versions 1.2-2.0 were supported by NSF CCF 1218349 and ACI SI2-SSE 1440700.
James R. McCombs, Eloy Romero, Andreas Stathopoulos, Lingfei Wu