【问题标题】:I have problems copying char on the GPU with CUDA我在使用 CUDA 在 GPU 上复制 char 时遇到问题
【发布时间】:2012-07-15 13:12:26
【问题描述】:

主持人:

unsigned char exp[128];
unsigned char __e;

i = cudaMalloc( (void**)&__e, 128 * sizeof(unsigned char) );
if(i != cudaSuccess)
    printf("cudaMalloc __e FAIL! Code: %d\n", i);

BN_bn2bin128B(e, exp);  // copy data from e to exp, no problems since here

i = cudaMemcpy( &__e, &exp, 128 * sizeof(unsigned char), cudaMemcpyHostToDevice);
if(i != cudaSuccess)
    printf("cudaMemcpy __e FAIL! Code: %d\n", i);

输出:

cudaMemcpy __e FAIL! Code: 11

错误11对应:

cudaErrorInvalidValue = 11, ///< Invalid value

为什么?哪里出错了?

【问题讨论】:

    标签: cuda char memcpy


    【解决方案1】:

    您错误地声明了__e。它必须是一个指针。试试这个:

    unsigned char exp[128];
    unsigned char * __e;
    
    i = cudaMalloc( (void**)&__e, 128 * sizeof(unsigned char) );
    if(i != cudaSuccess)
        printf("cudaMalloc __e FAIL! Code: %d\n", i);
    
    // whatever goes here to set exp
    
    i = cudaMemcpy( __e, &exp[0], 128 * sizeof(unsigned char), cudaMemcpyHostToDevice);
    if(i != cudaSuccess)
        printf("cudaMemcpy __e FAIL! Code: %d\n", i);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-15
      • 2020-07-08
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多