我的开发工作站目前有NVIDIA Quadro K2200和K620.两者都具有CUDA计算能力5.0.然而,最终的生产系统有一个Tesla K80,具有CUDA计算能力3.7.
是否可以在我的Quadro GPU上安装和开发用于计算能力的CUDA程序3.7,然后将它们移动到K80而无需进行重大更改?
是的,这是可能的.请确保不要在代码中使用任何计算能力 5.0+特定功能,并且您应该能够在cc3.7设备或cc5.0设备上正确运行代码.
编译代码时,请为两种计算功能指定目标体系结构,例如
-gencode arch=compute_50,code=sm_50 -gencode arch=compute_37,code=sm_37
Run Code Online (Sandbox Code Playgroud)
并且这种编译方法应该可以在任一平台上使用以创建可用的二进制文件.此外,编译这种方式将导致编译器标记您可能无意中使用cc5.0 +特定功能的任何情况.
我认为您不太可能无意中使用cc5.0 +特定功能; 它们不会成为常见CUDA使用的一部分.例如,如果您尝试使用lop3.b32内联PTX中的指令,那将无法在cc3.7设备上运行(并使用上述编译开关,编译器会为您标记该指令.)