我正在使用 OpenCL 来计算矩阵的特征向量。AMD有一个特征值计算的例子,所以我决定使用逆迭代来获得特征向量。
我遵循此处描述的算法,我注意到为了解决第 4 步,我需要求解一个线性方程组(或计算矩阵的逆)。
使用 OpenCL 在 GPU 上执行此操作的最佳方法是什么?有没有我应该研究的例子/参考资料?
编辑:对不起,我应该提到我的矩阵是对称的三对角线。从我一直在阅读的内容来看,这可能很重要,并且可能会大大简化整个过程
矩阵是三对角的这一事实非常重要 - 这将问题的复杂性从 O(N^3) 降低到 O(N)。您可能会从它也是对称的事实中获得一些加速,但这不会那么戏剧化。
求解三对角系统的方法在这里:http ://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm 。
另请注意,您不需要存储矩阵的所有 N^2 元素,因为几乎所有元素都为零。您只需要一个长度为 N 的向量(对于对角线)和两个长度为 N-1 的子对角线和超对角线。而且由于您的矩阵是对称的,因此子对角线和超对角线是相同的。
希望这会有所帮助...
I suggest using LU decomposition. Here's example.
It's written in CUDA, but I think, it's not so hard to rewrite it in OpenCL.