PRIMME, pronounced as prime, is a high-performance library for computing a few eigenvalues/eigenvectors, and singular values/vectors. PRIMME is especially optimized for large, difficult problems. Real symmetric and complex Hermitian problems, standard A x = \lambda x and generalized A x = \lambda B x, are supported. Besides, standard eigenvalue problems with a normal matrix are supported. It can find largest, smallest, or interior singular/eigenvalues, and can use preconditioning to accelerate convergence. PRIMME is written in C99, but complete interfaces are provided for Fortran, MATLAB, Python, and R.
To generate the static and the shared library type:
make lib # builds lib/libprimme.a make solib # builds lib/libprimme.so (or lib/libprimme.dylib)
The shared library is generated with the action solib instead. Usual flags are supported
gcc
, clang
or icc
-g
or -O3
The flags can be indicated by customizing Make_flags or directly introduced at the command line:
make lib CC=clang CFLAGS='-O3'
For building the external interfaces just do:
make matlab # Set MATLAB=/path/Matlab/bin/matlab MEX=/path/Matlab/bin/mex if needed make matlab-cuda # Requires to set CUDADIR and MAGMADIR make octave make python make R_install
We provide packages of the released version for R (see R PRIMME):
install.packages('PRIMME')
and Python (see Python primme):
pip install numpy # if numpy is not installed yet pip install scipy # if scipy is not installed yet pip install future # if using python 2 conda install mkl-devel # if using Anaconda Python distribution pip install primme
To compute few eigenvalues and eigenvectors from a real symmetric matrix call:
int dprimme(double *evals, double *evecs, double *resNorms, primme_params *primme);
The call arguments are:
To compute few singular values and vectors from a matrix call:
int dprimme_svds(double *svals, double *svecs, double *resNorms, primme_svds_params *primme_svds);
The call arguments are:
There are available versions for half and float and complex variants. See documentation in readme.txt file and in doc
directory; also it is online at doc. The examples directory has several self-contained examples in C, C++ and F77, some of them using PETSc and MAGMA.
Please cite (bibtex):
More information on the algorithms and research that led to this software can be found in the rest of the papers. The work has been supported by a number of grants from the National Science Foundation.
PRIMME is licensed under the 3-clause license BSD. Python and Matlab interfaces have BSD-compatible licenses. Source code under tests is compatible with LGPLv3. Details can be taken from COPYING.txt.
For reporting bugs or questions about functionality contact Andreas Stathopoulos by email, andreas at cs.wm.edu. See further information in the webpage http://www.cs.wm.edu/~andreas/software.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4