【发布时间】:2012-03-23 01:14:43
【问题描述】:
在调用函数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。为什么会出现此错误。有什么可能的原因吗?
【问题讨论】:
-
您确定
size_t与您系统上的CUDAint大小相同,即4 个字节吗? -
size_t 在我的系统上是 8 个字节,因为我使用的是 64 位 Windows 系统。在这种情况下有什么问题吗?
-
是的,当然 - CUDA int 只有 4 个字节。您不能只将 8 字节变量复制到 4 字节常量。
-
是的,它确实有效。谢谢!也许您可以将您的评论作为答案,以便我接受。
-
好的 - 很高兴知道 - 我现在已经回答了上述 cmets。