2011-12-16 14 views
0

私は、Finite Elementの離散化から疎行列をアセンブルするためのOpenCLコードを書いています。この行列をカーネルコードでアセンブルするための巧妙な構造に関するヒントをありがとうと思います!つまり、私はカーネル内のランダムな行列位置にアクセスする必要があります!OpenCLカーネルからの疎行列アクセス

+0

私は有限要素離散化にはあまり苦労していませんが、GPGPU.org [http://gpgpu.org/index.php?s=sparse%20matrix&searchbutton=Search]には疎行列に関する多くの記事があります。 –

答えて

0

大きなデータセットへのランダムアクセスは、GPUに課金されています。私はではないすべてのカーネルがランダムに1つのマスターテーブルに書き込むことができます。これを行うと、シリアルCPUよりもパフォーマンスが低下する可能性があります。

代わりに、私はおそらく各カーネルに作業するメモリのチャンクを与えます。たぶん、(行、列、値)タプルで小さな座標リストを使って行列の一部をアセンブルする必要があります。それぞれのカーネルは、行列データを組み立てるときに、それ自身のメモリチャンクで作業する必要があります。次に、そのデータをCPUに戻してソートし、より効率的なフォーマットに再構成します。

ソートされた行列データをさらに処理する必要がある場合は、2番目のカーネルを作成することをお勧めします。カーネルは単純なタスクで最もうまく動作します。

関連する問題