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