# I am looking for a complex sparse matrix EigenVector solver for GPGPU; preferably CUDA

So far the closest I've found is ViennaCL, which has a Lanczos implementation for Eigenvalues.

It is not clear that EigenVectors are produced by this library.

Does anyone here know whether ViennaCL solves for EigenVectors? And how to get them?

Or of any other sparse matrix EigenVector solver for GPGPU?

ETA:From what I have read, Lanczos is only an algorithm for converting from a general matrix to tridiagonal form. The QR algorithm (or other) is needed for extracting EigenValues/Vectors from the tridiagonal matrix.

Assuming I can upgrade the ViennaCL library to handle complex matricies, does anyone have a recommendation for a GPU based QR algorithm implementation?

• How many eigenvectors do you need? All of them? Only a few? Do you need high accuracy or just good approximations? – Karl Rupp Dec 5 '14 at 11:08
• Re the ETA: no, Lanczos is an algorithm for computing eigenvalues and eigenvectors. It can be used as a tridiagonalization algorithm (if you make $n$ iterations, where $n$ is the size of the matrix), but its main purpose is stopping much earlier than that and computing eigenpairs from the tridiagonal matrix of smaller size that you obtain. – Federico Poloni Dec 5 '14 at 11:08
• @KarlRupp , We only need the largest value/vector. Good approximations will probably do. We need the equivalent of Matlab EIGS on GPU. – John Smith Dec 5 '14 at 16:52
• @FedericoPoloni may I suggest that you correct the information on Wikipedia? en.wikipedia.org/wiki/Lanczos_algorithm – John Smith Dec 5 '14 at 20:12
• @JohnSmith That page has multiple issues, but it states clearly that "[t]he Lanczos algorithm is an iterative algorithm [...] to find the most useful eigenvalues and eigenvectors of a[...] linear system with a limited number of operations". Where did you read that it is an algorithm to convert a matrix to a tridiagonal form? – Federico Poloni Dec 5 '14 at 22:04