14

我有一个关于使用 CUDA 对数百个小矩阵进行特征分解的问题。

我需要同时计算数百个(例如 500 个)小(64×64)实对称矩阵的特征值和特征向量。我尝试通过使用国际象棋锦标赛排序的 Jacobi 方法来实现它(有关更多信息,请参阅本文 (PDF))。

在该算法中,每个块中定义了 32 个线程,而每个块处理一个小矩阵,32 个线程协同工作,对 32 个非对角元素进行膨胀直到收敛。但是,我对它的表现不是很满意。

我想知道我的问题在哪里有更好的算法,即许多 64×64 实对称矩阵的特征分解。我想户主的方法可能是一个更好的选择,但不确定它是否可以在 CUDA 中有效实施。网上有用的信息不多,因为大多数其他程序员更感兴趣的是使用 CUDA/OpenCL 来分解一个大矩阵而不是很多小矩阵。

4

1 回答 1

4

至少对于特征值,可以在 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

于 2013-04-17T13:24:21.450 回答