各スレッド ブロック (1 次元) が共有メモリ内の配列で他のいくつかのタスクとスキャンを実行する必要があるという問題があります。(配列には最大 1024 要素があります。)
このタイプの操作をサポートする優れたライブラリはありますか?
Thrust と CudPP をチェックしましたが、どちらもデータが最初にグローバル メモリにある場合にのみ機能します。かなり大きなオーバーヘッドがあるため、グローバルメモリ。
このタイプの操作をサポートする公開ライブラリがない場合、この操作を 1 回だけ記述して、いくつかの異なる問題で使用したい場合はどうすればよいでしょうか?
私の最初のアイデアは、スキャン操作を実行する単純なデバイス関数を作成することですが、共有メモリにアクセスして、カーネル関数ではないデバイス関数から __syncthreads() 操作を実行することは可能ですか? 私のもう1つのアイデアは、関数全体をマクロに書くことです。プリプロセッサがコードをカーネルコードにコピーするため、それは機能しますが、非常に複雑なマクロを書くことはマクロを使用する最良の方法ではありません.
PS.: ストリーミング マルチプロセッサ バージョン 2.1 を使用しているため、別のカーネルから新しいカーネルを起動できません。