大家好,请教一个很简单的入门问题:
刚学习了constant memory,在代码中想把一些常数变量挪到内存中。这里有如下两种初始化方式:
第一种,在main函数体外,file scope内声明,并直接给初值:
__constant__ double a = 140.0;
第二种,在main函数体外,file scope内声明,但在main函数内利用cudaMemCpyToSymbol给初值:
__constant__ double a;
void main()
{
double h_a = 140.0;
cudaMemCpyToSymbol(a,&h_a,sizeof(double));
}
我的问题是:
是不是第一种是错的,必须用cudaMemCpyToSymbol来对这种常量内存初始化?
如果不是错的,请问这两种方式有区别吗?第一种算作为第二种的简化?这两种方式都通过编译了。