2012-03-05 89 views
2

調用函數cudaMemcpyToSymbol時,出現無效值錯誤(cudaErrorInvalidValue)。發生錯誤的代碼就是這樣的。cudaErrorInvalidValue調用cudaMemcpyToSymbol時出錯

__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爲什麼會出現這種錯誤。任何可能的原因呢?

+0

您確定'size_t'與您的系統上的CUDA'int'大小相同,即4個字節? – 2012-03-05 15:16:02

+0

size_t在我的系統上是8個字節,因爲我使用的是64位Windows系統。在這種情況下是否會造成任何問題? – MetallicPriest 2012-03-05 15:17:16

+0

是的,當然 - CUDA int只有4個字節。您不能只將8字節變量複製到4字節常量。 – 2012-03-05 15:17:55

回答

3

您需要檢查系統上的size_tint的尺寸是否相同。如果size_t是8個字節,並且int只有4個字節,則調用將失敗 - 您不能將8字節變量複製到4字節CUDA設備常量。