我自己弄不明白,确保内核中使用的内存不变的最佳方法是什么?有一个类似的问题在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);
这两种方式是等价的还是第一种不能保证使用常量内存而不是全局内存? 大小动态变化,所以第二种方法在我的情况下不方便。