簡體   English   中英

CUDA:cudaMemcpy為__device__數組返回cudaErrorInvalidValue

[英]CUDA: cudaMemcpy returns cudaErrorInvalidValue for __device__ array

當我在設備上定義一個數組(在此示例中使用“ 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;
}

您應該使用cudaMemcpyFromSymbol。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM