1

1 つのカーネルのカーネル呼び出し間で共有メモリを使用したい。カーネル呼び出し間で共有メモリを使用できますか?

4

3 に答える 3

2

いいえ、できません。共有メモリにはスレッドブロックのライフサイクルがあります。__global__そこに格納されている変数は、1回の関数呼び出し中に1つのグループに属するすべてのスレッドからアクセスできます。

于 2012-05-15T22:24:30.777 に答える
0

以前は、共有メモリ ブロックごとに一意の ID を持ち、次のカーネルが ID をチェックして、この共有メモリ ブロックで必要な処理を実行する非標準的な方法でそれを行うことができました。これは、カーネルごとに完全な占有率を確保し、さまざまなコーナー ケースに対処する必要があったため、実装が困難でした。さらに、正式なサポートがなければ、コンピューティング デバイスと cuda のバージョン間の互換性に依存することはできません。

于 2012-05-22T14:37:18.090 に答える
0

ページロック メモリを試してみてください。速度はグラフィック メモリよりもはるかに遅くなるはずです。cudaHostAlloc (void **ptr, size_t size, cudaHostAllocMapped); 次に、ptr をカーネル コードに送信します。

于 2012-05-22T08:48:53.747 に答える