在GPU上计算特征值和特征向量的性能很差

时间:2012-03-16 18:47:03

标签: c++ cuda linear-algebra gpgpu

在某些代码中,我们需要获得具有对称实矩阵(Ax = lamba Bx)的广义特征值问题的自动向量和自动值。此代码使用LACPACK中的DSPGVX。我们希望使用MAGMA功能在GPU上加速。我们在这个论坛上询问并得到了关于这个的答案

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

我们的矩阵(N)的大小从100到50000甚至更多,与分子中的原子数有关。我们观察到:

a)对于大于2500(大约)的N,MAGMA不起作用;分段故障 b)MAGMA总是比LAPACK顺序慢,大约慢10倍

这种行为是否正常,我们可以克服它吗?任何人都可以报告任何参与此类问题的人获得体面加速的情况吗?

由于

2 个答案:

答案 0 :(得分:4)

根据我的经验,您可以通过切换到更好的eigensolver获得更大的性能优势。我所知道的最好的解算器是ARPACK。你的矩阵有一些结构,例如,如果它们很稀疏,你将获得最大利益。如果你只需要提取特征对总数的一小部分,这个求解器也是最有效的。

我首先尝试解决你在CPU上运行的问题。您可能会发现仅此一项就能满足您的需求。如果没有,那么将ARPACK的计算核心移动到GPU相对容易。或者,有可用的ARPACK并行版本。

答案 1 :(得分:2)

您是否尝试过CULA http://www.culatools.com/? CULA是由NVIDIA转换为CUDA的Lapack,因此至少在理论上它应该具有广义特征值问题的最佳实现之一。我认为单精度版本是免费的,所以你可以尝试一下。