2016-10-05 2 views
0

해싱을 수행 할 CUDA 커널을 작성 중입니다. 일단 입력을 얻으면 먼저 미리 정의 된 해시 버킷 크기로 해싱을 시도하고 오버플로가 발생하면 해싱 중에 더 큰 버킷 크기를 사용하여 해싱을 다시 수행해야합니다. 그래서 버킷 오버 플로우가 발생하면 호스트 코드에 오류를보고 할 수있는 내장 된 cuda 함수가 있는지 궁금합니다. 미리 정의 된 메모리 위치에 무언가를 써서 호스트 코드를 읽게 만들 수는 있지만, 가능하다면 내장 된 프리미티브를 사용하는 것을 선호합니다.CUDA 커널이 호스트 코드에 오류를보고 할 수 있도록하는 내장 CUDA 함수가 있습니까?

+0

나는 아무것도 없다고 생각하지 않습니다. 당신이 말했듯이, 당신은 어딘가에 무언가를 써 넣고 그것을 호스트에서 읽어야 할 것입니다. – leo

답변

2

CUDA는 현재 지원되는 모든 하드웨어 (sm_20 이상)에서 assertion support입니다. 문서에 따라 다음과 같이 할 수 있습니다.

__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); 
} 

신호 오류 조건을 호출 호스트 코드에 활용할 수 있습니다.

관련 문제