在主机代码中,似乎__CUDA_ARCH__
宏不会生成不同的代码路径,相反,它会为当前设备生成完全代码路径的代码。
但是,如果__CUDA_ARCH__
在设备代码中,它将为编译选项(/ arch)中指定的不同设备生成不同的代码路径。
任何人都可以确认这是正确的吗?
答案 0 :(得分:7)
__CUDA_ARCH__
在设备代码中使用时会带有一个定义的数字,反映当前正在编译的代码体系结构。
它不适用于主机代码。来自nvcc manual:
此宏可用于实现GPU功能,以确定当前正在编译的虚拟体系结构。主机代码(非GPU代码)不得依赖它。
因此未定义主机代码中__CUDA_ARCH__
的使用(至少是CUDA)。