找回密码
 立即注册
ShugangZhang 该用户已被删除
发表于 2019-11-17 14:27:14
16440
大家好,请教一个很简单的入门问题:
刚学习了constant memory,在代码中想把一些常数变量挪到内存中。这里有如下两种初始化方式:

第一种,在main函数体外,file scope内声明,并直接给初值:
  1. __constant__ double a = 140.0;
复制代码

第二种,在main函数体外,file scope内声明,但在main函数内利用cudaMemCpyToSymbol给初值:
  1. __constant__ double a;

  2. void main()
  3. {
  4.        double h_a = 140.0;
  5.        cudaMemCpyToSymbol(a,&h_a,sizeof(double));
  6. }
复制代码


我的问题是:

是不是第一种是错的,必须用cudaMemCpyToSymbol来对这种常量内存初始化?
如果不是错的,请问这两种方式有区别吗?第一种算作为第二种的简化?这两种方式都通过编译了。


使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册

zzczczxczxczx