Poor performance for computing eigenvalues โ€‹โ€‹and eigenvectors on a GPU

In some code, it is necessary to obtain automatic vectors and auto-values โ€‹โ€‹for the generalized eigenvalue problem with symmetric real matrices (Ax = lamba Bx). This code uses DSPGVX from LACPACK. We wanted to speed it up on the GPU using the MAGMA function. We asked about this forum and got an answer about it.

http://icl.cs.utk.edu/magma/docs/zhegvx_8cpp.html

The size of our matrices (N) is from 100 to 50,000 and even larger, which is associated with the number of atoms in the molecule. We observe:

a) for N greater than 2500 (approximate), MAGMA simply does not work; segmentation error b) MAGMA is always slower than LAPACK, about 10 times slower

Is this normal behavior and can we overcome it? Can someone tell me a link when someone who works on similar issues gets decent acceleration?

thanks

+6
source share
2 answers

In my experience, you can get better performance benefits by switching to the best eigensolver. The best solver that I know of is ARPACK . You will benefit greatly, since your matrices have some structure, for example, if they are sparse. This solver is also most effective if you only need to extract a small fraction of the total number of pairs of your own.

I would start by trying to solve this issue on your problems, working only on the processor. You may find that this alone provides sufficient performance for your needs. If not, it is relatively easy to compute the core of the ARPACK calculation on the GPU. Or parallel versions of ARPACK are available.

+4
source

Have you tried CULA http://www.culatools.com/ ? CULA is Lapack converted for NVIDIA's CUDA, so at least in theory, it should have one of the best implementations for a generalized eigenvalue problem. I think the one-precision version is free, so you can try it.

+2
source

Source: https://habr.com/ru/post/910943/


All Articles