我自己弄不明白,確保內核中使用的內存不變的最佳方法是什麼?有一個類似的問題在http://stackoverflow...r-pleasant-way。 我正在使用GTX580並僅編譯2.0功能。我的內核看起來像CUDA代碼中的常量內存使用情況
__global__ Foo(const int *src, float *result) {...}
我執行在主機下面的代碼:
cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
的另一種方法是添加
__constant__ src[size];
到.CU文件,從刪除SRC指針內核並執行
cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
這兩種方式是等價的還是第一種不能保證使用常量內存而不是全局內存? 大小動態變化,所以第二種方法在我的情況下不方便。