2

为了使用CUFFT 回调,限制之一是必须使用可重定位的可重定位设备代码编译代码

当这个条件不满足时,就会发生不好的事情;无声的失败、错误的答案等。

我已经让我当前的构建工作,但我想让这段代码更加健壮,以防止未来项目中的错误编译。

有没有办法在编译单元内检测到这一点?例如预处理器标志

4

1 回答 1

1

用于检测何时 -rdc=true指定的宏是:

__CUDACC_RDC__

在这里发表

作为一个简单的测试用例,您可以这样做:

$ 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
$
于 2016-07-20T17:13:53.597 回答