如何在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>>>();
它给出了正确的答案..为什么?
答案 0 :(得分:0)
您不能直接使用cudaMalloc
分配到GPU内存中的__device__
符号。执行此操作时,您只在主机内存中分配。查看我的answer到您自己的question,您在一分钟之内发布了这个cudaMemcpyToSymbol。简短版本是使用{{3}}将动态分配的设备指针写入静态声明的符号。