CUDA:cudaMemcpy为__device__数组返回cudaErrorInvalidValue

时间:2010-06-20 16:00:13

标签: c cuda memcpy

当我在设备上定义一个数组(在本例中用“Hello”字符串初始化)并尝试将其复制到主机时,我得到错误代码cudaErrorInvalidValue。但是,从内核中可以访问d_helloStr[]。参考CUDA编程指南B.2.1章节,这样的变量也应该可以通过运行时库访问。为什么这个示例代码不起作用?

#include <cuda.h>
#include <stdio.h>


__device__ char d_helloStr[] = {'H','e','l','l','o','\0'};

// Host function
int
main(int argc, char** argv)
{
  cudaError_t err;
  char h_helloStr [sizeof(d_helloStr)];

  // copy device string to host string: 
  err = cudaMemcpy(h_helloStr, d_helloStr, sizeof(d_helloStr), cudaMemcpyDeviceToHost);
  printf("err = %d\n", err);

  // result string:   
  printf("%s\n", h_helloStr);

  return 0;
}

1 个答案:

答案 0 :(得分:1)

你应该使用cudaMemcpyFromSymbol。