正如其他问题和链接所述,您不能再为此功能使用符号名称。现在这个功能已经消失了,什么时候会想用这个cudaMemCpy
呢?您什么时候想使用它?权衡或好处是什么?
问问题
20559 次
1 回答
38
简而言之,因为cudaMemcpy
不能做与cudaMemcpyToSymbol
没有额外 API 调用相同的事情。考虑一个常量内存数组:
__constant__ float coeffs[8];
要使用 将值复制到此数组cudaMemcpyToSymbol
,只需执行
cudaMemcpyToSymbol(coeffs, hostData, 8*sizeof(float));
做同样的事情cudaMemcpy
需要这样:
float *dcoeffs;
cudaGetSymbolAddress((void **)&dcoeffs, coeffs);
cudaMemcpy(dcoeffs, hostData, 8*sizeof(float), cudaMemcpyHostToDevice);
cudaMemcpy
如果没有事先进行符号查找,直接调用是非法的。
[标准免责声明:所有在浏览器中编写的代码,无需访问文档或编译器,使用风险自负]
于 2013-04-13T06:45:17.673 回答