如其他问题所述并根据链接,您不能再使用此功能的符号名称。既然该功能已经消失,何时会想要在cudaMemCpy
上使用它?你什么时候想要使用它?什么是权衡或利益?
答案 0 :(得分:23)
简而言之,因为cudaMemcpy
无法在没有额外API调用的情况下执行与cudaMemcpyToSymbol
相同的操作。考虑一个常量内存数组:
__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
是非法的。
[标准免责声明:所有使用浏览器编写的代码无法访问文档或编译器,使用风险自负]