Глобальные переменные __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;
}
Результат:
$ nvcc -arch=sm_20 test.cu -run
d_myVar is 13