从设备到主机的Cuda复制常数

从设备到主机的Cuda复制常数,cuda,Cuda,我试图将内存从设备复制到主机,但出现以下错误: CUDA错误13:无效的设备符号 符号引用GPU内存,所以当您要从设备复制到主机时,不能使用*ToSymbol。对于设备到主机,请使用cudaMemcpyFromSymbol cudaError_t cudaMemcpyFromSymbol ( void * dst, const char * symbol, size_t count, size_t offset = 0, enum cudaMemcpyK

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

CUDA错误13:无效的设备符号


符号引用GPU内存,所以当您要从设备复制到主机时,不能使用*ToSymbol。对于设备到主机,请使用cudaMemcpyFromSymbol

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

你不能那样做。。API的文档说明“种类可以是cudamemcpyhostodevice或cudaMemcpyDeviceToDevice”。。如果设备上的常量内存符号是只读的,你可以检查一下,你希望通过从常量符号复制来实现什么?@Talonmes谢谢你的回答,你能详细说明一下吗?我不完全理解为什么不能从只读常量变量复制,因为你没有修改它的值,并且应该允许这个操作?哦,我不知道CudamCpyFromSymbol,这类参数让我很困惑,我想就像CudamCpy一样,但似乎您只能在cudaMemcpyFromSymbol上使用cudaMemcpyDeviceToHost或cudaMemcpyDeviceToDevice,而cudaMemcpyHostToDevice或cudaMemcpyDeviceToDevice使用cudaMemcpyToSymbol。
cudaError_t cudaMemcpyFromSymbol    (   void *  dst,
  const char *  symbol,
  size_t    count,
  size_t    offset = 0,
  enum cudaMemcpyKind   kind = cudaMemcpyDeviceToHost    
)