I have a generalized eigenvalue problem Hx=\lambda S x to solve, where H is Hermitian and S is positive definite. Both H and S are sparse matrices and their dimensions (size(H, 1)
) are on the order of 10^5. Roughly 1% of the elements of H and S are nonzero. A few eigenvalues and eigenvectors are needed around a specific number \mu.
My current computing resources include nodes of 128 cores and 256 GB memory, and I can use as many as 8 nodes. I have the following environment settings:
export JULIA_NUM_THREADS=128
export OMP_NUM_THREADS=128
and the relevant code is
eigs(H - Ī¼ * S, S, which=:SM, nev=6)
With eigs
function from Arpack.jl
, the computation looks completely serial (the CPU usage is 100% from top
command). However, if I do eigs(H - Ī¼ * S, S, nev=6)
, the CPU usage is roughly 2800%, but thatās not what I want, because the default behavior is finding the eigenvalues of the largest magnitude (which=:LM
).
Right now, I havenāt been able to successfully obtain the eigenvalues (closest to \mu) and eigenvectors even once with the current computing resources. Any general suggestions to solve such a problem is very helpful, including
- trying out other packages,
- fixing the weird behavior of using only 1 core if
eigs
is instructed to find the eigenvalues of the smallest magnitude. Even for finding the eigenvalues of the largest magnitude,eigs
is still not using all my cores (128
in total).