4

私はOpenCLを使用して行列の固有ベクトルを計算しています。AMDには固有値計算のがあるので、逆反復法を使用して固有ベクトルを取得することにしました。

ここで説明するアルゴリズムに従っていましたが、ステップ4を解くには、連立一次方程式を解く(または行列の逆行列を計算する)必要があることに気付きました。

逆反復

OpenCLを使用してGPUでこれを行うための最良の方法は何ですか?調べておくべき例/参考資料はありますか?


編集:申し訳ありませんが、私の行列は対称三重対角であると述べるべきでした。私が読んでいることから、これは重要であり、おそらくプロセス全体を大幅に簡素化する可能性があります

4

2 に答える 2

3

行列が三重対角であるという事実は非常に重要です。これにより、問題の複雑さがO(N ^ 3)からO(N)に減少します。対称的であるという事実からおそらくある程度のスピードアップを得ることができますが、それはそれほど劇的ではありません。

三重対角システムを解く方法は次のとおりです: http: //en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm

また、ほとんどすべての要素がゼロになるため、行列のすべてのN^2要素を格納する必要がないことにも注意してください。必要なのは、長さN(対角線用)の1つのベクトルと、副対角線および超対角線用の長さN-1の2つのベクトルだけです。また、行列は対称であるため、副対角線と超対角線は同じです。

お役に立てば幸いです...

于 2011-09-29T12:53:03.170 に答える
2

LU分解を使用することをお勧めします。これがです。

CUDAで書かれていますが、OpenCLで書き直すのはそれほど難しいことではないと思います。

于 2011-09-29T09:04:14.347 に答える