调用cudaMemcpyToSymbol时出现cudaErrorInvalidValue错误

时间:2012-03-05 15:01:29

标签: c cuda gpu gpgpu

调用函数cudaMemcpyToSymbol时,我得到无效值错误(cudaErrorInvalidValue)。发生错误的代码就是这样的。

__constant__ int c_queryLength; //Length of query sequence in chunks of 4
...............
if((cuda_err = cudaMemcpyToSymbol(c_queryLength,&queryLengthInChunks,
  sizeof(queryLengthInChunks),0, cudaMemcpyHostToDevice))!=cudaSuccess)
{
 // Check which error occured;
 ...............
}

此处queryLengthInChunks类型size_t的值为36.为什么我收到此错误。可能的原因是什么?

1 个答案:

答案 0 :(得分:3)

您需要检查size_t与系统上int的大小是否相同。如果size_t是8个字节而int只有4个字节,则调用将失败 - 您不能只将8字节变量复制到4字节CUDA设备常量。