在一些代码中,我们需要获得对称实矩阵(Ax=lamba-Bx)的广义特征值问题的自向量和自值。此代码使用LACPACK中的DSPGVX。我们想在GPU上使用MAGMA功能来加速它。我们在这个论坛上询问并得到了关于这个的答案
http://icl.cs.utk.edu/magma/docs/zhegvx_8cpp.html
我们的矩阵(N)的大小从100到50000,甚至更多,与分子中的原子数有关。我们观察到:
a) 对于大于2500(大约)的N,MAGMA就是不起作用;分段故障b) MAGMA的运行速度总是比LAPACK序列慢,大约是的10倍
这种行为正常吗?我们能克服吗?有人能报告任何参考资料吗?在这些参考资料中,任何处理类似问题的人都能获得不错的加速?
感谢
根据我的经验,您可以通过切换到更好的本征解算器来获得更大的性能优势。据我所知,最好的解决方案是ARPACK。如果你的矩阵有一些结构,例如,如果它们是稀疏的,你将获得最大的好处。如果只需要提取本征对总数的一小部分,则该解算器也是最有效的。
我会先尝试这个解决方案来解决你在CPU上运行的问题。您可能会发现,仅此一项就足以满足您的需求。如果没有,那么将ARPACK的计算核心移动到GPU相对容易。或者,有可用的ARPACK的并行版本。
你尝试过CULA吗http://www.culatools.com/?CULA是NVIDIA为CUDA进行的Lapack转换,因此至少在理论上它应该是广义特征值问题的最佳实现之一。我认为单精度版本是免费的,所以你可以试一试。