CUDA全局变量

时间:2011-06-06 16:01:53

标签: cuda

如何在CUDA中创建全局变量?

__device__ float *devD;
cudaMalloc((void**)&devD, s);
calculateDT_T2B<<<dimGrid, dimBlock>>>();
cudaMemcpy(dtr, devD, s, cudaMemcpyDeviceToHost);
print(dtr);

它没有给出正确答案(给出一些随机数)。但是当我打电话时

calculateDT_T2B<<<dimGrid, dimBlock>>>(devD); instead of
calculateDT_T2B<<<dimGrid, dimBlock>>>();

它给出了正确的答案..为什么?

1 个答案:

答案 0 :(得分:0)

您不能直接使用cudaMalloc分配到GPU内存中的__device__符号。执行此操作时,您只在主机内存中分配。查看我的answer到您自己的question,您在一分钟之内发布了这个cudaMemcpyToSymbol。简短版本是使用{{3}}将动态分配的设备指针写入静态声明的符号。