在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倍
这种行为是否正常,我们能克服吗?任何人都可以报告任何有关这个类似问题的工作人员得到体面加速的参考吗?
感谢
答
以我的经验,你可能能够通过切换到一个更好eigensolver获得更大的性能优势。我所知道的最好的求解器是ARPACK。例如,如果它们很稀疏,你会从矩阵中获得最大收益。如果您只需要提取特征对的总数的一小部分,则此解算器也是最有效的。
我会从CPU上运行的问题开始尝试解决这个问题。您可能会发现,仅凭这一点就可以满足您的需求。如果不是,则将ARPACK的计算内核移动到GPU相对比较容易。或者,可以使用并行版本的ARPACK。
答
您是否试过CULA http://www.culatools.com/? CULA被Lapack转换为NVIDIA的CUDA,所以至少在理论上它应该是广义特征值问题的最佳实现之一。我认为单精度版本是免费的,所以你可以试试看。
你是什么意思“不起作用”......它没有运行?它是否会产生错误的结果,是否会在运行时崩溃和烧毁? – prelic 2012-03-16 19:06:16
你在使用什么GPU? – talonmies 2012-03-16 19:53:59
特斯拉c2070与4GB内存 – flow 2012-03-16 19:58:05