我在CUDA文档中找不到任何解释为什么cudaMemcpyToSymbol在以下内容中失败(使用cudaErrorInvalidSymbol)
__constant__ float dev[2];
struct Struct
{
void construct()
{
float host[2] = {1, 2};
cudaError_t error = cudaMemcpyToSymbol(dev, host, sizeof(host));
printf(cudaGetErrorString(error));
}
};
class Class
{
public:
Class()
{
s.construct();
}
private:
Struct s;
};
static Class instance;
int main()
{
}
当从方法调用construct()时它起作用:
class Class
{
public:
void foo()
{
s.construct();
}
private:
Struct s;
};
static Class instance;
int main()
{
instance.foo();
}