CUDA应用程序的计算能力是否会自动升级?

sga*_*zvi 6 cuda nvcc

如果我编译具有较低计算能力的CUDA程序,例如1.3(nvcc标志sm_13),并在具有计算能力2.1的设备上运行它,它是否会利用计算2.1的功能?

在那种情况下,计算2.1设备是否会像计算1.3设备一样运行?

ter*_*era 9

不,它不会利用您需要明确编程的任何功能.只会使用对用户透明的功能(如缓存或更大的寄存器文件).

此外,您需要确保您的目标文件包含编译为PTX中间语言的代码版本,可以动态编译到目标体系结构,或者您甚至不运行程序.

编译为虚拟体系结构(nvcc -arch compute_13)以使用-gencodenvcc选项确保或使用多个体系结构的代码创建胖二进制文件.

使用胖二进制文件,如果将代码包装在#if __CUDA_ARCH__ >= xyz预处理程序条件内,则可以对仅在更高计算能力下可用的功能进行编程.