gpt4 book ai didi

CUDA:cudaMemcpy 仅在仿真模式下工作

转载 作者:行者123 更新时间:2023-12-02 11:01:18 26 4
gpt4 key购买 nike

我刚刚开始学习如何使用 CUDA。我正在尝试运行一些简单的示例代码:


float *ah, *bh, *ad, *bd;
ah = (float *)malloc(sizeof(float)*4);
bh = (float *)malloc(sizeof(float)*4);
cudaMalloc((void **) &ad, sizeof(float)*4);
cudaMalloc((void **) &bd, sizeof(float)*4);
... initialize ah ...

/* copy array on device */
cudaMemcpy(ad,ah,sizeof(float)*N,cudaMemcpyHostToDevice);
cudaMemcpy(bd,ad,sizeof(float)*N,cudaMemcpyDeviceToDevice);
cudaMemcpy(bh,bd,sizeof(float)*N,cudaMemcpyDeviceToHost);

当我在仿真模式(nvcc -deviceemu)下运行时,它运行良好(并且实际上复制了数组)。但是当我以常规模式运行它时,它运行时没有错误,但从不复制数据。就好像 cudaMemcpy 行被忽略了。

我做错了什么?

非常感谢,杰森

最佳答案

您应该检查错误,最好是在每个 malloc 和 memcpy 上检查错误,但只需在最后执行一次就足够了 (cudaGetErrorString(cudaGetLastError())

只是为了检查显而易见的事情:

  • 您确实有支持 CUDA 的 GPU,对吗?运行 deviceQuery SDK 示例以检查设备是否正常工作以及所有驱动程序是否已安装并正常工作。
  • N(在 memcpy 中)等于 4(在 malloc 中),对吧?

关于CUDA:cudaMemcpy 仅在仿真模式下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2479574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com