我正在使用一个全局变量说d_myVar,它将在main函数中使用cudaMalloc分配设备内存.我不清楚,在进行全局声明时,我应该在它前面使用__ device __吗?我问这个,因为如果它是主机中的局部变量并被传递给内核,我们就不会在它前面写__ device __.如果我错了,请告诉我.
全局范围的__device__变量未分配cudaMalloc.只需在全局范围内注释变量__device__:
#include <stdio.h>
__device__ int d_myVar;
__global__ void foo()
{
printf("d_myVar is %d\n", d_myVar);
}
int main()
{
int h_myVar = 13;
cudaMemcpyToSymbol(d_myVar, &h_myVar, sizeof(int), 0, cudaMemcpyHostToDevice);
foo<<<1,1>>>();
cudaThreadSynchronize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果:
$ nvcc -arch=sm_20 test.cu -run
d_myVar is 13
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4435 次 |
| 最近记录: |