6 ~ 8 KB を超え、最大 16 KB の大量の定数データが必要です。同時に、共有メモリは使用しません。そして今、この定数データを共有メモリに保存したいと思います。それは良い考えですか?パフォーマンスの概算はありますか? ブロードキャストは、定数だけでなく共有メモリでも機能しますか?
アプリケーションにとってパフォーマンスは重要です。そして、Tesla C2075 (CUDA 2.0) には 8 KB の定数メモリ キャッシュしかないと思います。
6 ~ 8 KB を超え、最大 16 KB の大量の定数データが必要です。同時に、共有メモリは使用しません。そして今、この定数データを共有メモリに保存したいと思います。それは良い考えですか?パフォーマンスの概算はありますか? ブロードキャストは、定数だけでなく共有メモリでも機能しますか?
アプリケーションにとってパフォーマンスは重要です。そして、Tesla C2075 (CUDA 2.0) には 8 KB の定数メモリ キャッシュしかないと思います。
コンピューティング機能 2.0 では、L1 と共有メモリに同じメモリが使用されます。L1 と共有メモリ間のパーティショニングは、呼び出しで制御できますcudaFuncSetCacheConfig()
。L1を可能な限り最大(48K)に設定することをお勧めします
cudaFuncSetCacheConfig(MyKernel, cudaFuncCachePreferL1);
次に、定数データをグローバル メモリからプルし、L1 にキャッシングを処理させます。const の配列が複数ある場合はconst
、カーネル引数リストの修飾子を使用して、それらの一部に定数キャッシュを使用するようにコンパイラに指示できます。そうすれば、L1 と定数キャッシュの両方を利用して定数をキャッシュできます。
ブロードキャストは、L1 および一定のキャッシュ アクセスの両方で機能します。