2012-03-05 4 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

size_t는 64 비트 Windows 시스템을 사용하고 있으므로 내 시스템에서는 8 바이트입니다. 이 경우 어떤 문제가 있습니까? – MetallicPriest

+0

물론, CUDA int는 4 바이트입니다. 8 바이트 변수를 4 바이트 상수로 복사 할 수 없습니다. –

답변

3

size_t의 크기가 int과 같은지 확인해야합니다. 당신은 4 바이트 CUDA 장치 상수 8 바이트 변수를 복사 할 수 없습니다 - size_t 8 바이트이고 int은 4 바이트의 경우, 호출은 실패합니다.

관련 문제