I am working with an electronic structure code that needs to use a symmetric double precision eigenvalue routine. Previously we had been using magma_dsyevd_gpu for this purpose but we wanted to make the use of magma optional since it represents an additional dependency for users. To that end I’ve been looking at cusolverDnDsyevj and cusolverDnDsyevd. The latter works fine. The former works in most cases but for one of our test cases the found eigenvalues are sorted incorrectly. According to the cusolver documentation this routine should always sort eigenvalues in ascending order but that is not the case. Note that the eigenvalues were the same as the eigenvalues from cusolverDnDsyevd. It’s just that they were not sorted correctly. The matrix size was N=11232.

The returned eigenvalue distribution was not random. They were returned in blocks that were sorted in ascending order but the blocks themselves were out of order.