방금 CUDA 5.0에서 5.5로 업그레이드했고 모든 VS2012 CUDA 프로젝트가 assert() 문제로 인해 컴파일이 중단되었습니다. 문제를 재현하기 위해 VS 2012에 새로운 CUDA 5.5 프로젝트를 만들고 프로그래밍 가이드에서 바로 코드를 추가했으며 동일한 오류가 발생했습니다.assert() in CUDA 5.5
__global__ void testAssert(void)
{
int is_one = 1;
int should_be_one = 0;
// This will have no effect
assert(is_one);
// This will halt kernel execution
assert(should_be_one);
}
이 다음과 같은 컴파일러 오류 발생 : 내가 부족 분명 뭔가
kernel.cu(22): error : calling a __host__ function("_wassert") from a __global__ function("testAssert") is not allowed
거기를?
'assert'는'_wassert()'로 변환되는 매크로입니다. CUDA 5에서 실제로 작동하는 것이 놀랍습니다. – Pixelchemist
'assert.h'를 포함하고 있습니까? 컴파일 문제는 코드 조각이 아닌 전체 재생기를 게시하는 것이 훨씬 더 편리합니다. 즉, 아무것도 추가하거나 아무것도 편집하지 않고 복사, 붙여 넣기 및 컴파일 할 수있는 전체 프로그램입니다. –
@Pixelchemist : CUDA에서 assert가 정상적으로 작동합니다 (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#assertion 참조). –