I am currently working on a project one of whose main task is to diagonalize massive matrices. To this end I need a good way to find their eigenvalues. I have been looking into the libraries and am having a tough time deciding what to use. The matrices in question are Hermitian and relatively sparse. Looking through the set of cuSolver’s sparse functions I find only cusolverSpcsreigvsi which uses shift-inverse to find the eigenvalue closest to a given input starting point. Since I need the entire spectrum this probably isn’t good enough. Luckily, cuSolver has a dense function cusolverDnsyevd which returns the entire spectrum.

My questions are these: How much better are the sparse functions in general, compared to dense functions? Should I just go with the dense function anyway? Is there another library I missed which is more fit to my purpose?

note: I am working in cudaFortran

Thanks in advance