Efficient way to find eigenvalues of complex symmetric matrix with real off-diagonal elements

My goal is to find all eigenvalues (and eigenvectors) in a given range of magnitudes of a complex symmetric matrix with real off-diagonal elements (only diagonal elements are complex). Currently I'm using PARPACK for non-hermitian matrices and discard eigenvalues outside of the window of interest, but this method is more general than I need. Moreover, PARPACK only lets you use a maximum of matrix_size / NCV processors (NCV is proportional to the desired number of eigenvalues), but even within this limitation it does not scale efficiently. Do you know any algorithm or library that can take advantage of these restrictions and do better than PARPACK? Or at least scale better than PARPACK?

• The eigenvalue problem just does not scale well with process count - some algorithms just don't parallelise well. Can you give us an idea of the matrix size and number of processors you are using? Mar 21, 2020 at 12:20
• @IanBush My matricies are typically from 10000 to 1000000 (they are sparse though, so matrix-vector multiplication does not take long). The number of processors typically ranges from 8 to 96, depending on how many eigenvalues I need. Due to the restriction that I specified in the post, If I need more eigenvalues I have to use less processors, which makes the task even harder. Mar 21, 2020 at 17:35
• I'm not limited to 96 processors though, the supercomputer I'm using has many more, I just don't use them because PARPACK is not particularly efficient with them (and because of the restriction). Mar 21, 2020 at 18:53
• Check out SLEPc Mar 22, 2020 at 3:32
• I would try something like FEAST, where you can define a region in the complex plane in which you are interested. Mar 22, 2020 at 22:19