CUDA-将CPU变量转换为GPU常量变量

CUDA-将CPU变量转换为GPU常量变量,cuda,gpu,Cuda,Gpu,和CUDA一样,最基本的东西有时也是最难的 所以…我只想把一个变量从CPU复制到GPU的常量变量,我现在很难 这就是我所拥有的: __constant__ int contadorlinhasx_d; int main(){ (...) int contadorlinhasx=100; status=cudaMemcpyToSymbol(contadorlinhasx_d,contadorlinhasx,1*sizeof(int),0,cudaMemcpyHostToDevice)

和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分钟的时间试图复制一个愚蠢的变量:/


提前感谢

您需要做以下事情

cudaMemcpyToSymbol("contadorlinhasx_d",
                   &contadorlinhasx,
                   1*sizeof(int),
                   0,
                   cudaMemcpyHostToDevice);
[注意,这是旧的API调用,现在在CUDA 4.0及更新版本中已被弃用]


如果查看,前两个参数是指针。第一个可以是字符串,这将强制在API内部进行符号查找(CUDA 4之前),也可以是设备符号地址(CUDA 4及更高版本)。第二个参数是副本的主机源内存地址。编译器错误消息非常明确-您传递的参数类型错误,编译器在库中找不到匹配的实例。

谢谢!有一次我有“contadorlinhasx_d”,但我完全忘记了“&”。我真的很感谢你的帮助
cudaMemcpyToSymbol(contadorlinhasx_d,
                   &contadorlinhasx,
                   1*sizeof(int),
                   0,
                   cudaMemcpyHostToDevice);