2012-03-05 34 views
2

関数cudaMemcpyToSymbolを呼び出すと、無効な値エラー(cudaErrorInvalidValue)が表示されます。エラーが発生したコードは次のようなものです。ここで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; 
............... 
} 

タイプsize_tであるqueryLengthInChunksの値は、36なぜ私はこのエラーを取得しています。それにはどんな理由がありますか?

+0

'size_t'はシステム上のCUDA' int'と同じサイズ、つまり4バイトですか? –

+0

私は64ビットWindowsシステムを使っているので、size_tは私のシステムでは8バイトです。この場合、問題はありますか? – MetallicPriest

+0

もちろん、CUDAのintはわずか4バイトです。 8バイトの変数を4バイトの定数にコピーすることはできません。 –

答えて

3

size_tのサイズがintであるかどうかを確認する必要があります。 size_tが8バイトで、intが4バイトしかない場合、呼び出しは失敗します.4バイトの変数を4バイトのCUDAデバイス定数にコピーすることはできません。

関連する問題