我如何判断 cuda 代码是否正在使用可重定位设备代码进行编译?
How can I tell if cuda code is being compiled with relocatable device code?
为了使用CUFFT callbacks, one of the restrictions is that the code must be compiled with relocatable relocatable device code.
当不满足这个条件时,就会发生不好的事情;无声的失败、错误的答案等
我的当前构建工作正常,但我想让这段代码更健壮,以防止未来项目中的错误编译。
有什么方法可以在编译单元中检测到这一点吗?例如预处理器标志
用于检测何时指定 -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
$
为了使用CUFFT callbacks, one of the restrictions is that the code must be compiled with relocatable relocatable device code.
当不满足这个条件时,就会发生不好的事情;无声的失败、错误的答案等
我的当前构建工作正常,但我想让这段代码更健壮,以防止未来项目中的错误编译。
有什么方法可以在编译单元中检测到这一点吗?例如预处理器标志
用于检测何时指定 -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
$