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
On the details of matrix
A should be a
Laplace matrix. The size of
A may be 100,000 × 100,000.
A is a symmetric positive semidefinite 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:
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?
Any reply is highly appreciated!
Properties of the matrix?
Sorry for the lack of detailed information
, I’ve updated the questions so far.
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.
Also, “large” is somewhat subjective, so it would be useful to know the typical size.
An MWE with a function that generates a matrix that reflects the structure of your matrix may result in more concrete answers.
Welcome to the Julia Discourse! We are enthusiastic about helping Julia programmers, both beginner and experienced. This public service announcement (PSA) outlines best practices when asking for help. Following these points makes it easier for us to help you and more likely you’ll get a prompt, useful answer.
If you were referred to this wiki page in the course of solving a problem, it is recommended that you just read the first post, and ignore the discussion below. Keywords are highlighted to…
You have the option
KrylovKit.jl. It should not speed things up too much though.
Thank you for your advice, I have updated the question.