在逆迭代中求解线性方程

时间:2011-09-29 04:38:53

标签: opencl linear-algebra eigenvector

我正在使用OpenCL来计算矩阵的特征向量。 AMD有一个example的特征值计算,所以我决定使用逆迭代来获得特征向量。

我正在遵循here描述的算法,我注意到为了解决第4步,我需要求解一个线性方程组(或计算矩阵的逆矩阵)。

Inverse Iteration

使用OpenCL在GPU上执行此操作的最佳方法是什么?是否有任何我应该研究的例子/参考资料?


编辑:对不起,我应该提到我的矩阵是对称的三对角线。从我读过的内容来看,这可能很重要,也许可以简化整个过程

2 个答案:

答案 0 :(得分:3)

矩阵是三对角的这一事实非常重要 - 这可以将问题的复杂性从O(N ^ 3)降低到O(N)。你也可以从它对称的事实中得到一些加速,但这不会那么戏剧化。

解决三对角系统的方法如下:http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm

另请注意,您不需要存储矩阵的所有N ^ 2个元素,因为几乎所有元素都将为零。你只需要一个长度为N的矢量(对角线)和两个长度为N-1的矢量用于子和超对角线。由于你的矩阵是对称的,所以子对象和超对角线是相同的。

希望这有用......

答案 1 :(得分:2)

我建议使用LU decomposition。 这是example

它是用CUDA编写的,但我认为,在OpenCL中重写它并不是那么难。