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).