8

OpenCLを使用していくつかの計算を高速化しようとしていますが、アルゴリズムの一部は行列の反転で構成されています。OpenCLまたはCUDAで記述された行列または一般的な反転のlu分解(lapack dgetrfおよびdgetri)を計算するためのオープンソースライブラリまたは無料で利用可能なコードはありますか?マトリックスは実数で正方形ですが、それ以外に特別なプロパティはありません。これまでのところ、GPUでの基本的なblas行列-ベクトル演算の実装のみを見つけることができました。

マトリックスはかなり小さく、約60〜100行と列しかないため、CPUでより高速に計算できますが、アルゴリズムの途中で使用されるため、ホストに転送し、逆数を計算する必要があります。次に、結果をデバイスに転送して戻し、そこではるかに大規模な計算で使用されます。

4

6 に答える 6

11

ViennaCL を見てください: http://viennacl.sourceforge.net/

于 2010-07-14T03:14:02.097 に答える
5

Open CL での実装はありませんが、「Numerical Recipes」と Gil Strang の「Into to Applied Math」の両方に、簡単にコーディングできる素晴らしい説明があります。「NR」には、適応できるCコードがあります。

逆数を計算する

これは正しくありません。LU分解で逆数を計算しているのではなく、行列を分解しています。逆が必要な場合は、一連の単位ベクトルで前方後方置換を行う必要があります。小さいですが重要な違いです。

于 2010-05-31T12:57:15.390 に答える
1

I know this is kind of late, but if you are trying to do any matrix calculations on a matrix that is that small (60-100 rows), then the computations are going to be much faster on a CPU rather than a GPU because of the time it takes to copy the information from main memory to the GPU's memory. If you are wanting to do this, then I would suggest looking into using a parallel language such as OpenMP or MPI as these would allow you to parallelize your code to speed up the calculations on the CPU.

于 2012-08-09T05:54:10.217 に答える
0

CULAをチェック

http://www.culatools.com/ http://www.culatools.com/versions/basic

于 2010-06-02T06:17:38.783 に答える