我对使用CUDA的数百个小矩阵的特征分解有疑问。
我需要同时计算数百(例如500)小(64乘64)实对称矩阵的特征值和特征向量。我试图通过Jacobi方法使用国际象棋比赛顺序来实现它(有关更多信息,请参阅this paper (PDF))。
在该算法中,每个块中定义了32个线程,而每个块处理一个小矩阵,32个线程一起工作以使32个非对角元素膨胀直到收敛。但是,我对它的表现并不十分满意。
我想知道我的问题哪里有更好的算法,即许多64乘64实对称矩阵的特征分解。我想家庭主人的方法可能是更好的选择,但不确定它是否可以在CUDA中有效实施。网上没有很多有用的信息,因为大多数其他程序员更感兴趣的是使用CUDA / OpenCL来分解一个大矩阵而不是很多小矩阵。
答案 0 :(得分:3)
至少对于特征值,可以在Cuda SDK中找到样本
http://www.nvidia.de/content/cudazone/cuda_sdk/Linear_Algebra.html
图像似乎已损坏,但样本下载仍然有效。我建议下载完整的SDK并查看该示例。此外,本文可能会有所帮助:
http://docs.nvidia.com/cuda/samples/6_Advanced/eigenvalues/doc/eigenvalues.pdf