I have been using the FEAST eigensolver for a long time and one problem I have always had is knowing how big to make m0 and x. I know emin and emax but I have no idea how many eigenvalues fall in-between those bounds. The problem is that my a and b matrices are huge and I have to guess the size of m0 and x, which means that I often chew up lots of memory unnecessarily if there are less eigenvalues than my guess.
Is there a way to do some sort of preliminary call to find out how many eigenvalues are between emin and emax (or even a close estimate) before I have to allocate memory for the x array so that I can then set m0 and allocate x with realistic values?
Peter, I think this is one of the main disadvantages of this algorithm. Probably I am wrong, but that impossible with the FEAST. We may ask someone from the Feast developers to help you in that possible.
as this option is not yet implemented in MKL, but you may try to take the EigenValues Slicing Library. EVSL provides routines for computing eigenvalues located in a given interval, and their associated eigenvectors, of real symmetric - standard or generalized eigenvalue problems.
here is the link to this library -- https://www-users.cs.umn.edu/~saad/software/EVSL/index.html
and here is the link to Eric's Polizzy publication regarding this topic - https://experts.umn.edu/en/publications/efficient-estimation-of-eigenvalue-counts-in-an-interval