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

6
在一些代码中,我们需要对称实矩阵的广义特征值问题(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倍
这种行为是否正常?我们能否克服它?是否有人报告过任何类似问题的工作获得了不错的加速效果?谢谢。

3
“不起作用”是什么意思?它无法运行吗?它产生了错误的结果,还是在运行时崩溃了? - prelic
是的,我同意,但N=500怎么办? - Open the way
矩阵在所有情况下都是密集的。 - Open the way
我不会费心去使用GPU,而是会使用ARPACK。 - David Heffernan
此问题中的链接已失效。请在问题本身中包含尽可能多的信息。 - Richard
显示剩余11条评论
2个回答

4
根据我的经验,通过使用更好的特征值求解器,您可能能够获得更大的性能优势。我所知道的最佳求解器是ARPACK。如果矩阵具有某些结构(例如,它们是稀疏的),则您将获得最大的收益。如果您只需要提取总共少量的特征对,则此求解器也最有效。
我建议您首先在CPU上尝试此求解器来解决您的问题。您可能会发现这已足够满足您的需求。如果不行,那么将ARPACK的计算核心移动到GPU上相对容易。或者,也可以使用并行版本的ARPACK。

你觉得ARPACK能够应用于密集矩阵的情况吗?如果可以,你能否指出一些例子?谢谢。 - Open the way
它不对矩阵的类型做任何假设。阅读有关反向传递接口的内容,您就会明白为什么这样做。 - David Heffernan
你应该赢得奖励,不仅因为你的启发性答案,还因为你提供了优秀的图片,谢谢。 - Open the way
哈哈。你真的笑得很大声!;-) 你试过arpack了吗?有没有运气? 我发现它很棘手,但一旦我让它工作起来,它的性能就让我大开眼界。 - David Heffernan

2

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


我看了一下,但是没有看到任何关于广义特征值问题实现的相关信息。那里只报告了有关简单特征值问题的信息,我说得对吗? - Open the way
2
@flow 你说得对。我只使用CULA来解决对称特征值问题,而没有用于广义问题。抱歉造成了误解。 - mmisu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接