2

亭主:

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

なんで?エラーはどこにありますか?

4

1 に答える 1

3

__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);
于 2012-07-15T13:54:52.403 に答える