SOFTWARE
Teddy
is loving to transform his research into meaningful
and efficient software. These software can be used not
only for experts to improve research productivity, but
also for ordinary users to make full use of them to
their problems with ease.
- PRIMME
MEX: A
MATLAB interface for state-of-the-art
eigensolver PRIMME
PRIMME
MEX is a MATLAB interface for free software PRIMME
(PReconditioned Iterative MultiMethod Eigensolver)
which finds a number of eigenvalues and their
corresponding eigenvectors of a real symmetric, or
complex hermitian matrix A. It is a useful tool for
both non-experts and experts to easily call PRIMME.
Largest, smallest and interior eigenvalues are
supported. Preconditioning can be used to accelerate
convergence.
Our
interface function PRIMME_EIGS is as easy as MATLAB
internal function EIGS but provides more than 30
parameters to be tuned by the experts for optimal
performance.
%
Input: [A, numEvals, target, opts, eigsMethod, P]
% Output: [evals, evecs, norms, primmeout]
primme_eigs(A)
primme_eigs(A, numEvals)
primme_eigs(A, numEvals, target)
primme_eigs(A, numEvals, target, opts)
primme_eigs(A, numEvals, target, opts, eigsMethod)
primme_eigs(A, numEvals, target, opts, eigsMethod, P)
primme_eigs(A, numEvals, target, opts, eigsMethod,
P1,P2)
primme_eigs(A, numEvals, target, opts, eigsMethod,
Pfun)
primme_eigs(Afun, dim,...)
Please
check out PRIMME
in GitHub. Let us know if you find any bugs or
problems.
-
PRIMME_SVDS:
A
state-of-the-art preconditioned SVD solver
for large matrix
Teddy
is working on developing PRIMME_SVDS, a full
functionality preconditioned SVD solver for computing
accurately singular triplets of large sparse matrices
based on the PRIMME eigensolver. Currently, the
function PRIMME_SVDS is like MATLAB
internal function SVDS,
which is very easy to be called in MATLAB through our
PRIMME MEX. PRIMME_SVDS can compute not only largest
singular triplets but also smallest singular singular
triplets, a computational task challenging all
existing SVD methods and SVD softwares. Instead of
leveraging a widely accepted approach - Lanczos
bidiagonalization, we demonstrate theoretically and
experimentally that a well-tuned eigensolver solver
with necessary enhancements can beat all existing SVD
methods when seeking a few of smallest singular
triplets, let alone taking advantage of preconditioner
to accelerate convergence. PRIMME_SVDS can efficiently
compute extreme singular triplets, with or without a
preconditioner, or leveraging shift and invert
operator. The key enhancements have been added into
the PRIMME software and its MATLAB version is
available. [Download
PRIMME_SVDS with its Matlab Interface]. Note
that this version is based on old-version of PRIMME
but sufficiently for experimental investigations in
MATLAB.
primme_svds is an
interface between user function call and PRIMME_mex
function. The primme_svds function requires at least one
input (input matrix A) and output at least singular
values of A. Like SVDS() function in the MATLAB,
we provide different level function calls to satisfy
users' demands:
% Input: [A, numSvds, target, opts, eigsMethod,
svdsMethod, P]
% Output: [PRIMME_U, PRIMME_S, PRIMME_V , norms,
primmeout]
primme_svds(A)
primme_svds(A, numSvds)
primme_svds(A, numSvds, target)
primme_svds(A, numSvds, target, opts)
primme_svds(A, numSvds, target, opts, eigsMethod)
primme_svds(A, numSvds, target, opts, eigsMethod,
svdsMethod)
primme_svds(A, numSvds, target, opts, eigsMethod,
svdsMethod, P)
primme_svds(A, numSvds, target, opts, eigsMethod,
svdsMethod, P1,P2)
primme_svds(A, numSvds, target, opts, eigsMethod,
svdsMethod, Pfun)
primme_svds(Afun, M, N,...)
The
new PRIMME_SVDS in PRIMME as well as its parallel
implementation has been completed and now in its beta
version. Please go to our PRIMME GitHub page to
download and test it. [Download
PRIMME_SVDS with its C Interface and parallel
implementation]. Let
us know if you find any bugs or problems.