1

次のようにしてCUDA定数メモリにコピーできることがわかっているマッピングテーブルがあります。

#define LENGTH 4
#define THREAD_BLOCKS 64

const int mapTable[LENGTH] = {0, 1, 3, 5};

int main()
{
  //..

__constant__ int dMapTable[LENGTH];
cudaMemcpyToSymbol( dMapTable , mapTable, size_t(LENGTH) * sizeof(int) , 0, cudaMemcpyHostToDevice );

  //..
}

ここでやりたいことは、このテーブルの複数のコピーを CUDA 定数メモリに作成することです。作成するコピーの数は、スレッド ブロック THREAD_BLOCKS の数と同じです。これを行う方法とこれを効率的に行う方法を教えてもらえますか?

4

1 に答える 1

1

定数データの複数のコピーを設定することで、カーネルのパフォーマンスが改善されたとしたら、私は非常に驚かれることでしょう。定数メモリはキャッシュされるため、重複した値でキャッシュをスラッシングするだけです。

また、コンピューティング機能 3.0 までのすべてのデバイスで、一定のメモリ サイズが 64KiB しかないことにも注意してください。

それでも、パフォーマンスを確認したい場合は、通常どおりに複数のコピーをセットアップしてから、カーネルの時間を計ってください。

于 2012-08-27T00:13:49.330 に答える