与CUDA一样,最基本的东西有时候最难......
所以...我只是想将一个变量从CPU复制到GPU的常量变量,我很难过。
这就是我所拥有的:
__constant__ int contadorlinhasx_d;
int main(){
(...)
int contadorlinhasx=100;
status=cudaMemcpyToSymbol(contadorlinhasx_d,contadorlinhasx,1*sizeof(int),0,cudaMemcpyHostToDevice);
我得到了这个错误
presortx.cu(222): error: no instance of overloaded function "cudaMemcpyToSymbol" matches the argument list
argument types are: (int, int, unsigned long, int, cudaMemcpyKind)
有人能帮帮我吗?我知道这是一个愚蠢的错误,但我厌倦了谷歌搜索,我花了差不多30分钟试图复制一个愚蠢的变量:/
提前致谢
答案 0 :(得分:3)
您需要执行类似
的操作cudaMemcpyToSymbol("contadorlinhasx_d",
&contadorlinhasx,
1*sizeof(int),
0,
cudaMemcpyHostToDevice);
[注意这是旧的API调用,现在已在CUDA 4.0及更新版本中弃用]
或
cudaMemcpyToSymbol(contadorlinhasx_d,
&contadorlinhasx,
1*sizeof(int),
0,
cudaMemcpyHostToDevice);
如果查看API documentation,前两个参数就是指针。第一个可以是字符串,它将强制在API内部进行符号查找(前CUDA 4),或者设备符号地址(CUDA 4和更高版本)。第二个参数是副本的主机源内存的地址。编译器错误消息非常明确 - 您传递的参数类型错误,编译器无法在库中找到匹配的实例。