2016-06-30 33 views
2

CUFFT callbacksを使用するには、コードを再配置可能なrelocatable device codeでコンパイルする必要があります。cudaコードがリロケータブルデバイスコードでコンパイルされているかどうかを確認する方法はありますか?

この条件が満たされないと、悪いことが起こります。サイレントエラー、間違った答えなど

私の現在のビルドは機能していますが、私はこのコードを将来のプロジェクトの誤ったコンパイルに対してより堅牢にしたいと考えています。

コンパイル単位内でこれを検出する方法はありますか?例えばプリプロセッサフ​​ラグ

答えて

1

-rdc=trueが指定されているときを検出するために使用するマクロは次のとおりです。

__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 
$ 
関連する問題