cuda - 我在使用 CUDA 在 GPU 上复制字符时遇到问题

标签 cuda char memcpy

主持人:

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
为什么?错误在哪里?

最佳答案

您错误地声明了__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);

关于cuda - 我在使用 CUDA 在 GPU 上复制字符时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11492203/

相关文章:

cuda - CUDA恒定内存最佳实践

visual-studio-2010 - CUDA 5 和 Visual Studio 2010 智能感知错误

cuModuleLoad 期间的 CUDA_ERROR_INVALID_IMAGE

c++ - CUDA:cudaMallocManaged 是否处理退出?

iphone - 将 NSString 传递给 charValue

c++ - 在带有 union 的类中使用 'memcpy()'

c - 使用 C 返回数组

c++ - 可移植代码 - 每个字符的位数

从二维动态字符数组复制到c中的另一个二维动态数组

c - 使用内存映射 I/O 的 memcpy 和 friend