All Projects → primme → primme

primme / primme

Licence: other
PReconditioned Iterative MultiMethod Eigensolver for solving symmetric/Hermitian eigenvalue problems and singular value problems

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
fortran
972 projects
matlab
3953 projects
cython
566 projects
r
7636 projects

Projects that are alternatives of or similar to primme

radondb-mysql-kubernetes
Open Source,High Availability Cluster,based on MySQL
Stars: ✭ 146 (+48.98%)
Mutual labels:  high-performance
numerical linear algebra
Julia code for the book Numerical Linear Algebra
Stars: ✭ 43 (-56.12%)
Mutual labels:  singular-value-decomposition
GenericSchur.jl
Julia package for Schur decomposition of matrices with generic element types
Stars: ✭ 14 (-85.71%)
Mutual labels:  eigenvalues
bitECS
Functional, minimal, data-oriented, ultra-high performance ECS library written in JavaScript
Stars: ✭ 372 (+279.59%)
Mutual labels:  high-performance
leafserver
🍃A high performance distributed unique ID generation system
Stars: ✭ 31 (-68.37%)
Mutual labels:  high-performance
jNVMf
A NVMf library for Java
Stars: ✭ 23 (-76.53%)
Mutual labels:  high-performance
FastRationals.jl
Arithmetic with small and with very large rationals is made fast.
Stars: ✭ 15 (-84.69%)
Mutual labels:  high-performance
alarm-dog
哮天犬是一个通用的统一告警平台,提供配置化、流程化、标准化的能力,支持多种告警通知渠道,支持告警收敛、过滤、升级、工作流、自动恢复等功能,实现统一输入、不同输出。可以对接Grafana、阿里云Arms、实时计算等监控能力,各业务也可以直接在代码中埋点上报告警,也可以定制化开发,实现监控告警全场景覆盖。https://tal-tech.github.io/alarm-dog-docs
Stars: ✭ 165 (+68.37%)
Mutual labels:  high-performance
ormdb
ORM tool for .Net / .Net.Core
Stars: ✭ 14 (-85.71%)
Mutual labels:  high-performance
imgsvd
Shiny App for Image Compression via SVD
Stars: ✭ 22 (-77.55%)
Mutual labels:  singular-value-decomposition
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-81.63%)
Mutual labels:  high-performance
NanoLogLite
A revised version of NanoLog which writes human readable log file, and is easier to use.
Stars: ✭ 18 (-81.63%)
Mutual labels:  high-performance
cocoyaxi
A go-style coroutine library in C++11 and more.
Stars: ✭ 2,392 (+2340.82%)
Mutual labels:  high-performance
space
A SCI-FI community game server simulating space(ships). Built from the ground up to support moddable online action multiplayer and roleplay!
Stars: ✭ 25 (-74.49%)
Mutual labels:  high-performance
marina
High-Performance Erlang Cassandra CQL Client
Stars: ✭ 50 (-48.98%)
Mutual labels:  high-performance
svd-image-compression-demo
Demonstration of low rank matrix approximations via singular value decomposition
Stars: ✭ 23 (-76.53%)
Mutual labels:  singular-value-decomposition
carina
Carina: an high performance and ops-free local storage for kubernetes
Stars: ✭ 256 (+161.22%)
Mutual labels:  high-performance
data-parallelism
juliafolds.github.io/data-parallelism/
Stars: ✭ 22 (-77.55%)
Mutual labels:  high-performance
snowem
Snowem is a lightweight live streaming server, based on webrtc technology. Its design mainly focuses on simplicity, scalability and high performance.
Stars: ✭ 73 (-25.51%)
Mutual labels:  high-performance
MultiHttp
This is a high performance , very useful multi-curl tool written in php. 一个超级好用的并发CURL工具!!!(httpful,restful, concurrency)
Stars: ✭ 79 (-19.39%)
Mutual labels:  high-performance

PRIMME: PReconditioned Iterative MultiMethod Eigensolver

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.

Making and Linking

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

  • CC, compiler program such as gcc, clang or icc
  • CFLAGS, compiler options such as -g or -O3
  • CUDADIR, directory of CUDA installation (optional)
  • MAGMADIR, directory of MAGMA installation (optional)
  • PRIMME_WITH_HALF, activates support for half precision if it set to yes; compiler supporting __fp16 is required, e.g., clang.

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

C Library Interface

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:

  • evals, array to return the found eigenvalues;
  • evecs, array to return the found eigenvectors;
  • resNorms, array to return the residual norms of the found eigenpairs; and
  • primme, structure that specify the matrix problem, which eigenvalues are wanted and several method options.

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:

  • svals, array to return the found singular values;
  • svecs, array to return the found vectors;
  • resNorms, array to return the residual norms of the triplets; and
  • primme_svds, structure that specify the matrix problem, which values are wanted and several method options.

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.

Citing this code

Please cite (bibtex):

  • A. Stathopoulos and J. R. McCombs PRIMME: PReconditioned Iterative MultiMethod Eigensolver: Methods and software description, ACM Transaction on Mathematical Software Vol. 37, No. 2, (2010), 21:1-21:30.
  • L. Wu, E. Romero and A. Stathopoulos, PRIMME_SVDS: A High-Performance Preconditioned SVD Solver for Accurate Large-Scale Computations, SIAM J. Sci. Comput., Vol. 39, No. 5, (2017), S248--S271.

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.

  • A. Stathopoulos, Nearly optimal preconditioned methods for Hermitian eigenproblems under limited memory. Part I: Seeking one eigenvalue, SIAM J. Sci. Comput., Vol. 29, No. 2, (2007), 481--514.
  • A. Stathopoulos and J. R. McCombs, Nearly optimal preconditioned methods for Hermitian eigenproblems under limited memory. Part II: Seeking many eigenvalues, SIAM J. Sci. Comput., Vol. 29, No. 5, (2007), 2162-2188.
  • J. R. McCombs and A. Stathopoulos, Iterative Validation of Eigensolvers: A Scheme for Improving the Reliability of Hermitian Eigenvalue Solvers, SIAM J. Sci. Comput., Vol. 28, No. 6, (2006), 2337-2358.
  • A. Stathopoulos, Locking issues for finding a large number of eigenvectors of Hermitian matrices, Tech Report: WM-CS-2005-03, July, 2005.
  • L. Wu and A. Stathopoulos, A Preconditioned Hybrid SVD Method for Computing Accurately Singular Triplets of Large Matrices, SIAM J. Sci. Comput. 37-5(2015), pp. S365-S388.

License Information

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.

Contact Information

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.

Support

  • National Science Foundation through grants CCF 1218349, ACI SI2-SSE 1440700, and NSCI 1835821
  • Department of Energy through grant Exascale Computing Project 17-SC-20-SC
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].