私自身は理解できません。私のカーネルで使用されているメモリを確実にする最良の方法は一定です。 http://stackoverflow...r-pleasant-wayに同様の質問があります。 私はGTX580で作業しており、2.0の機能のみをコンパイルしています。別の方法からSRCポインタを削除し、ファイルを.cuするCUDAコードでの定数メモリの使用
__constant__ src[size];
を追加することです
cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
:私のカーネルは、私がホスト上で次のコードを実行
__global__ Foo(const int *src, float *result) {...}
のように見えますカーネルと実行する
cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
これらの2つの方法は同じですか、または最初のものがグローバルメモリではなく定数メモリの使用を保証していませんか? サイズは動的に変更されるため、私の場合は2番目の方法は便利ではありません。