2016-06-30 19 views
2

CUFFT callbacks을 사용하려면 코드를 재배치 가능 코드 relocatable device code으로 컴파일해야한다는 제한 사항 중 하나가 있습니다.cuda 코드가 변동 가능 장치 코드로 컴파일되고 있는지 어떻게 알 수 있습니까?

이 조건이 충족되지 않으면 나쁜 일이 발생합니다. 조용한 실패, 오답 등이 있습니다.

현재 빌드가 작동 중이지만이 코드는 이후 프로젝트의 잘못된 컴파일에 대해보다 강력하게 만들고 싶습니다.

컴파일 장치 내부에서이를 감지 할 수있는 방법이 있습니까? 예 : -rdc=true이 지정된 경우 전처리 플래그

답변

1

매크로 감지하는 데 사용할 수 있습니다 :

__CUDACC_RDC__ 

간단한 테스트 케이스로

here을 발표, 당신은 할 수 :

$ cat t1.cu 
#ifndef __CUDACC_RDC__ 
#error THIS CODE REQUIRES CUDA RELOCATABLE DEVICE CODE COMPILATION 
#endif 

int main(){} 
$ nvcc -c t1.cu 
t1.cu:2:2: error: #error THIS CODE REQUIRES CUDA RELOCATABLE DEVICE CODE COMPILATION 
#error THIS CODE REQUIRES CUDA RELOCATABLE DEVICE CODE COMPILATION 
^
$ nvcc -rdc=true -c t1.cu 
$