如果我编译具有较低计算能力的CUDA程序,例如1.3(nvcc标志sm_13),并在具有计算能力2.1的设备上运行它,它是否会利用计算2.1的功能?
在那种情况下,计算2.1设备是否会像计算1.3设备一样运行?
不,它不会利用您需要明确编程的任何功能.只会使用对用户透明的功能(如缓存或更大的寄存器文件).
此外,您需要确保您的目标文件包含编译为PTX中间语言的代码版本,可以动态编译到目标体系结构,或者您甚至不运行程序.
编译为虚拟体系结构(nvcc -arch compute_13)以使用-gencodenvcc选项确保或使用多个体系结构的代码创建胖二进制文件.
使用胖二进制文件,如果将代码包装在#if __CUDA_ARCH__ >= xyz预处理程序条件内,则可以对仅在更高计算能力下可用的功能进行编程.
| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |