struct d_struct {
// stuff
};
__device__ __constant__ d_struct structs[SIZE];
当我打电话
cudaMemcpyToSymbol("structs", &h_struct, sizeof(d_struct), index * sizeof(d_struct), cudaMemcpyHostToDevice)
在主机内存的d_struct "h_struct"
上,我收到invalid device symbol
cuda错误。
答案 0 :(得分:1)
如果您可以提供更多详细信息,那将有所帮助,例如您运行的平台和主机编译器版本?哪个CUDA工具包版本?什么设备?
与此同时,提出了一些建议:
cudaMemcpyToSymbol()
?如果没有,那么它应该仍然有效,因为查找是通过名称而不是符号完成的,但检查您是否已将其声明为extern "C"
并且您是从C ++调用答案 1 :(得分:-2)
在CUDA Programming Guide v4.2 D.2.2.1中,它表示
不允许
__device__
,__shared__
和__constant__
限定符:
class
,struct
和union
数据成员- 形式参数,
- 在主机上执行的函数中的局部变量。