在GPU上计算特征值和特征向量的性能不佳

问题描述:

在一些代码中,我们需要为对称实矩阵(Ax = lamba Bx)的广义特征值问题获得自动向量和自动值。此代码使用LACPACK中的DSPGVX。我们希望使用MAGMA功能在GPU上加速。我们问的这个论坛,并得到了回答这个在GPU上计算特征值和特征向量的性能不佳

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

我们的矩阵的大小(N)变为100至50000,甚至更多,这涉及到一个分子的原子数。我们观察到:

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

这种行为是否正常,我们能克服吗?任何人都可以报告任何有关这个类似问题的工作人员得到体面加速的参考吗?

感谢

+3

你是什么意思“不起作用”......它没有运行?它是否会产生错误的结果,是否会在运行时崩溃和烧毁? – prelic 2012-03-16 19:06:16

+0

你在使用什么GPU? – talonmies 2012-03-16 19:53:59

+0

特斯拉c2070与4GB内存 – flow 2012-03-16 19:58:05

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

我会从CPU上运行的问题开始尝试解决这个问题。您可能会发现,仅凭这一点就可以满足您的需求。如果不是,则将ARPACK的计算内核移动到GPU相对比较容易。或者,可以使用并行版本的ARPACK。

+0

你认为ARPACK可以应用于密集矩阵的情况吗?如果是这样,你能指出一些例子吗?谢谢 – flow 2012-03-20 17:40:21

+0

它对矩阵的类型没有任何假设。阅读有关反向传递接口的信息,你会明白为什么会这样。 – 2012-03-20 18:04:16

+0

你值得赢得赏金,不仅因为你的鼓舞人心的答案,而且给出了你的优秀图片,谢谢 – flow 2012-03-24 18:40:04

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

+0

我看了一下,但没有看到与广义特征值问题的实现有关的任何信息。只有关于简单特征值问题的信息才会在那里报告,对吗? – flow 2012-03-22 11:04:59

+2

@flow你说得对。我只使用CULA来求解对称特征值问题,而不是针对广义问题。对不起,误会。 – mmisu 2012-03-22 15:18:21