【发布时间】:2012-07-09 18:51:19
【问题描述】:
我有一个关于使用 CUDA 对数百个小矩阵进行特征分解的问题。
我需要同时计算数百个(例如 500 个)小型(64×64)实对称矩阵的特征值和特征向量。我尝试通过使用国际象棋锦标赛排序的 Jacobi 方法来实现它(有关更多信息,请参阅this paper (PDF))。
在该算法中,每个块中定义了 32 个线程,而每个块处理一个小矩阵,32 个线程协同工作,对 32 个非对角元素进行膨胀直到收敛。但是,我对它的表现不是很满意。
我想知道我的问题在哪里有更好的算法,即许多 64×64 实对称矩阵的特征分解。我想户主的方法可能是一个更好的选择,但不确定它是否可以在 CUDA 中有效实施。网上有用的信息不多,因为大多数其他程序员更感兴趣的是使用 CUDA/OpenCL 来分解一个大矩阵而不是很多小矩阵。
【问题讨论】:
-
你想计算什么?整个分解?还是只有特征值?还是只有几个特征值/特征向量?
-
您的绩效目标是什么?你有没有花时间分析?结果如何?
-
@TimChild 是正确的 - 你的“我对它的表现不满意”并没有告诉我们太多。
-
一飞,如果您不提供更多关于您的问题的细节,我们将无法给您任何合理的答案。
-
@yifei-huang 我们愿意提供帮助。如果您可以提供更多关于“对性能不满意”的意思的信息,它可能会有所帮助,否则我会投票关闭......
标签: matrix cuda opencl linear-algebra numerical-methods