在反迭代过程中解决线性方程组

4
我正在使用OpenCL计算矩阵的特征向量。AMD有一个特征值计算的示例,所以我决定使用反迭代法来获取特征向量。
我遵循了这里描述的算法,并注意到为了解决第4步,我需要解一个线性方程组(或计算一个矩阵的逆)。
在GPU上使用OpenCL最好的方法是什么?有哪些示例/参考资料我应该查看?
编辑:抱歉,我应该提到我的矩阵是对称三对角的。从我所读的内容来看,这可能很重要,也许能简化整个过程。
2个回答

3
矩阵是三对角矩阵这一事实非常重要——它将问题的复杂度从O(N^3)降低到O(N)。同时,它也是对称的,这可能会带来一些加速效果,但不会像三对角性那样显著。
解决三对角系统的方法在这里:http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
此外,请注意,您不需要存储矩阵的所有N^2个元素,因为其中几乎所有元素均为零。您只需要一个长度为N的向量(用于对角线)和两个长度为N-1的向量(用于子对角线和超对角线)。由于您的矩阵是对称的,子对角线和超对角线是相同的。
希望这有所帮助...

谢谢。这似乎很有效,而且非常简单。我将把它移植到OpenCL。 - nmat
@nmat 不知道你在 OpenCL 中编写三对角求解器的过程中有没有成功?我也希望解决一个三对角系统。目前似乎没有一种标准的方法可以在 GPU 上进行线性代数运算(BLAS 和 LAPACK)。自从几年前问过你问题以来,你有什么建议吗? - Daniel Farrell
@boyfarrell 抱歉,我无法帮助你。我没有开始编写它。祝你解决问题好运。 - nmat

2

我建议使用LU分解。这里有一个示例

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接