__CUDA_ARCH__宏的行为

use*_*128 1 cuda gpu nvidia

在主机代码中,__CUDA_ARCH__宏似乎不会生成不同的代码路径,相反,它将生成代码以确保当前设备的代码路径.

但是,如果__CUDA_ARCH__在设备代码中,它将为编译选项(/ arch)中指定的不同设备生成不同的代码路径.

谁能证实这是正确的?

Rob*_*lla 8

__CUDA_ARCH__ 当在设备代码中使用时,将携带一个定义的数字,反映当前正在编译的代码体系结构.

它不适用于主机代码.从nvcc 手册:

该宏可用于GPU功能的实现,以确定当前正在编译的虚拟体系结构.主机代码(非GPU代码)不得依赖它.

__CUDA_ARCH__因此,未定义主机代码的使用(至少通过CUDA).

  • 实际上,`__CUDA_ARCH__`甚至没有在主机代码中定义(可用于区分主机和设备编译).这就是为什么看起来主机代码中的测试似乎总是以相同的方式进行评估. (4认同)