CUDAMEMCPITOSYMBOL不复制数据
我想使用CUDAMEMCPITOSYMBOL不复制数据,cuda,gpu,Cuda,Gpu,我想使用\uuuu常量\uuuu内存,它将被我所有内核中的所有线程访问 宣言是这样的 extern __constant__ float smooth [8 * 1024]; 我正在使用将数据复制到此变量 cudaMemcpyToSymbol("smooth", smooth_local, smooth_size, 0, cudaMemcpyHostToDevice); 平滑大小=7K字节 它给了我不正确的输出 但是当我在-deviceemu模式下运行它并试图在内核中打印这两个变量的内容时,
\uuuu常量\uuuu
内存,它将被我所有内核中的所有线程访问
宣言是这样的
extern __constant__ float smooth [8 * 1024];
我正在使用将数据复制到此变量
cudaMemcpyToSymbol("smooth", smooth_local, smooth_size, 0, cudaMemcpyHostToDevice);
平滑大小=7K字节
它给了我不正确的输出
但是当我在-deviceemu
模式下运行它并试图在内核中打印这两个变量的内容时,我得到了所有零表示平滑,并且平滑是正确的
我试着在cudaMemcpyToSymbol
之后打印输出,但结果仍然是0
有人能解释一下我的问题吗?要声明CUDA常量内存,它应该是这样的:
__constant__ float smooth[8 * 1024];
请注意,CUDA常量内存是其转换单元的本地内存(即,它隐式声明为静态)。这是CUDA的一个恼人的限制,因此如果需要在separet.cpp/.cu文件之间共享这些值,则必须重新声明每个.cpp/.cu文件中所需的内存。您还必须再次调用cudaMemCopyToSymbol。最后,在整个CUDA程序中,您的总内存限制为64k。@Nishu,您解决了吗?