I am trying to update some fortran code from using CPU to using GPU. The task is to diagonalize a massive (10^6x10^6) sparse, complex, Hermitian matrix. Since I’m working with a Tesla K80 CUDA seems the best choice. Of the libraries that are listed on nVidia’s boast page:
- cuSolver has sparse functions but the only sparse eigenvalue function is a shift-inverse algorithm which can only find the nearest eigenvalue to an initial guess.
- CULA doesn't seem to have a sparse eigenvalue solver.
- cuSparse doesn't seem to have a sparse eigenvalue solver.
- ArrayFire doesn't seem to have a sparse eigenvalue solver.
- MAGMA has a symmetric/Hermitian sparse eigenvalue solver but would require me to build an interface.
So it seems that MAGMA is my only choice but it requires some interfacing to work with fortran. Also, I’m not entirely convinced the standard CUDA toolkit (which I’ve installed) comes with MAGMA so I’ll have to install it.
Am I basically right in my characterizations?