代码之家  ›  专栏  ›  技术社区  ›  t6d

CUDA:cudaMemcpy返回设备数组的cudaErrorInvalidValue

  •  1
  • t6d  · 技术社区  · 14 年前

    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 回复  |  直到 14 年前
        1
  •  1
  •   Tom    14 年前