Now I have a symmetric matrix A. I need to find the first n eigenvalues and eigenvectors. (I have not actually started to write code, but in the algorithm process I observed the need to solve the eigenvalues and eigenvectors of matrix A.)
The matrix A that I get from calculation is usually dense, and it is not a sparse matrix.
(If you have some suggestions for solving sparse matrix in the same situation, it is also possible)
Question:
My question is which method can be used for quick solution ? (including parallel computing with GPU or multi-core processor)
So far as I know, there are the following ways to achieve my goal in Julia:
using LinearAlgebra: eigvals(A) and eigvecs(A)
using Arpack: eigs(A)
using KrylovKit: eigsolve(A)
At present, I don’t know which of the three methods is the fastest (for large symmetric matrix). Or is there any faster calculation method besides the above methods?
The important point is: is it sparse or dense? If dense, you can’t easily beat eigen. If it’s sparse and you only need a couple of eigenpairs, use Lanczos from Arpack/KrylovKit, or LOBPCG from IterativeSolvers.