Cuda 将常量从设备复制到主机

标签 cuda

我正在尝试将内存从设备复制到主机,但出现以下错误:

CUDA Error 13: invalid device symbol

__device__ __constant__ unsigned int cuda_delta = 0;
int delta = 0;
checkCuda(cudaMemcpyToSymbol(cuda_delta, 
                             &delta,sizeof(unsigned int),
                             0,
                             cudaMemcpyHostToDevice)); // work
... // call kernel

// does not work, return  CUDA Error 13: invalid device symbol
checkCuda(cudaMemcpyToSymbol(&delta,
                             &cuda_delta,
                             sizeof(unsigned int), 
                             cudaMemcpyDeviceToHost)); 

最佳答案

符号引用 GPU 内存,因此当您想要从设备复制到主机时不能使用 *ToSymbol。对于要托管的设备,请使用 cudaMemcpyFromSymbol

cudaError_t cudaMemcpyFromSymbol    (   void *  dst,
  const char *  symbol,
  size_t    count,
  size_t    offset = 0,
  enum cudaMemcpyKind   kind = cudaMemcpyDeviceToHost    
)       

关于Cuda 将常量从设备复制到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819121/

相关文章:

CUDA 6.0 cudaMallocManaged 错误

Cuda 点积因非 1024 的倍数而失败

c++ - 在新线程中调用支持 CUDA 的库

python - 运行 apt-get 进出 Anaconda

c++ - 你如何使用CUFFT的批处理模式?

cuda - CUDA 图中的节点如何连接?

c++ - CUDA 支持 NVIDIA Tegra 4 处理器吗?

c++ - 我的 Cuda Vector 怎么可能在填充之后是空的?

cuda - 插入cuda内核

c++ - 解决cuda动态并行