小编mar*_*hor的帖子

CUDA代码中的常量内存使用情况

我自己无法弄明白,确保内核中使用的内存不变的最佳方法是什么.http://stackoverflow...r-pleasant-way也有类似的问题.我正在使用GTX580并仅编译2.0功能.我的内核看起来像

__global__ Foo(const int *src, float *result) {...}
Run Code Online (Sandbox Code Playgroud)

我在主机上执行以下代码:

cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
Run Code Online (Sandbox Code Playgroud)

另一种方法是添加

__constant__ src[size];
Run Code Online (Sandbox Code Playgroud)

到.cu文件,从内核中删除src指针并执行

cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
Run Code Online (Sandbox Code Playgroud)

这两种方式是等效的还是第一种不保证使用常量内存而不是全局内存?大小动态变化,所以第二种方式在我的情况下不方便.

c memory-management cuda constants gpu-constant-memory

7
推荐指数
1
解决办法
7438
查看次数