I've been trying to solve the generalised symmetric eigenproblem Bx = eAx for symmetric A and positive definite symmetric B, and so to work with the eigensolvers, we solve Ax = (1/e)Bx.
The 99 expected eigenvalues are 1,2,...,99.
I'm trying three solvers, Spectra, Intel MKL extremal (mkl_sparse_d_gv) and interval (dfeast_scsrgv).
I've attached an excel document with the time taken and precision.
Unexpectedly, Spectra is the fastest by far. MKL extremal seems very slow.
For MKL interval using FEAST, I get some strange results.
The interval solver doesn't seem to like it when there are eigenvalues on the boundary of the interval, but acts very strangely in test 4, for the interval [1,10].
Furthermore, the larger M0, the faster the code seems to run, which seems unusual, how should M0 be
I've only tried it on my CPU so far, which is a Intel(R) Xeon(R) CPU E3-1505M v6 @ 3.00GHz, 3000 Mhz, 4 Core(s), 8 Logical Processor(s).
The version of MKL I'm using is 2020.0.1. build 2020208 for intel 64 architecture.
As requested elsewhere, I've removed the Spectra calls, although the dependency on Eigen remains for reading in the matrix market files.
Attached is the new source file.