I need to find a few eigenvalues and eigenvectors of some large Hermitian sparse matrices. Right now, I am trying
KrylovKit.jl. Here are some considerations and my experiences.
Arpack.jldoes not have special routines for Hermitian matrices, and is less stable than
- With moderate size, multithreading works pretty good. For example, my CPU usage (from
topcomand) of my Julia process is roughly 2000% for
Arpack.jldiagonalizing 30624x30624 matrices (sparsity 0.005). However, when the matrices become larger (3 million by 3 million, sparsity 0.00012), the CPU usage of both
KrylovKit.jldrops to roughly 200%.
- Right now,
KrylovKit.jltakes 2200 seconds to diagonalize a 2883289x2883289 matrix with sparsity 0.00012 and
Arpack.jlneeds more than 1 hour.
Eventually, I would like to diagonalize a 30000000x30000000 matrix with sparsity of roughly 0.00003. What would be your suggestions to attack such a problem?