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
eigsis instructed to find the eigenvalues of the smallest magnitude. Even for finding the eigenvalues of the largest magnitude,eigsis still not using all my cores (128in total).
