【问题标题】:CUDA - Transfering CPU variables to GPU __constant__ variablesCUDA - 将 CPU 变量传输到 GPU __constant__ 变量
【发布时间】:2013-02-04 19:03:10
【问题描述】:

与 CUDA 一样,最基本的东西有时是最难的......

所以...我只想将一个变量从 CPU 复制到 GPU 的 constant 变量,但我很难。

这就是我所拥有的:

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

提前致谢

【问题讨论】:

    标签: cuda gpu


    【解决方案1】:

    你需要做类似的事情

    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 和更高版本)。第二个参数是副本的主机源内存地址。编译器错误消息非常明确 - 您传递了错误类型的参数,编译器在库中找不到匹配的实例。

    【讨论】:

    • 谢谢!有一次我有“contadorlinhasx_d”,但我完全忘记了“&”。我非常感谢您的帮助;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多