"-arch sm_13" 和 "-arch sm_20" 有什么区别?

18

我需要在我的应用程序中进行双精度计算。根据我在谷歌上找到的资料,我应该添加一个标志“-arch sm_13”或“-arch sm_20”。

问题1:"-arch sm_13"和"-arch sm_20"之间有什么区别?

问题2:"-arch sm_13"和"-arch sm_20"之间是否有性能差异?

我的GPU:GTX 570。

谢谢。


你需要使用sm_20。sm_13是为了计算1.3卡而设计的。 - Pavan Yalamanchili
这很简单?计算能力2.0 --> sm_20,计算能力1.3 --> sm_13。 - user1281071
1个回答

28

SM代表Streaming Multiprocessor,数字表示该架构支持的特性。您可以在CUDA编程指南的3.1.2-3.1.4节中找到一个很好的描述,并且您可以在附录F中的表格中查看与每个架构相关联的特性。

NVCC手册(也包含在工具包中)中可得:

为了允许架构的演化,NVIDIA GPU发布不同的代。新一代引入了主要的功能和/或芯片架构改进,而同一代的GPU型号显示出适度影响功能、性能或两者的轻微配置差异。

您的GPU具有计算能力2.0,因此应使用sm_20使编译器能够使用旧架构中没有的功能。如果您想要向后兼容,还可以针对sm_13(或sm_1x)进行目标设置,请查看上述文档,了解如何使用-gencode选项来将多个架构定位到单个nvcc调用中。

关于性能,需要注意的一点是,sm_1x不支持IEEE754浮点数,因此如果针对sm_13并在具有计算能力2.0或更高版本的设备上运行,则可能会发现浮点运行速度更快,因为它使用较不准确的路径。您还可以通过使用-ftz=true -prec-div=false -prec-sqrt=false选项来强制使用较不准确的路径,在sm_20或更高版本中实现此功能,请参见CUDA编程指南5.4.1节以获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接