use*_*071 18 cuda gpu gpu-programming
我的应用程序需要双精度计算.根据我在谷歌上发现的,我应该添加一个标志"-arch sm_13"或"-arch sm_20".
Q1:"-arch sm_13"和"-arch sm_20"有什么区别?
Q2:"-arch sm_13"和"-arch sm_20"之间的性能是否存在差异?
我的GPU:GTX 570.
谢谢.
Tom*_*Tom 27
SM代表Streaming Multiprocessor,数字表示架构支持的功能.您可以在CUDA编程指南第3.1.2-3.1.4节中找到一个很好的描述,您可以在附录F的表格中看到与每个架构相关的功能.
从NVCC手册(也包含在工具包中):
为了实现架构演进,NVIDIA GPU在不同代中发布.新一代产品在功能和/或芯片架构方面进行了重大改进,而同一代产品中的GPU型号显示出"适度"影响功能,性能或两者的微小配置差异.
您的GPU具有Compute Capability 2.0,因此您应该使用sm_20来使编译器能够使用旧架构中不可用的功能.如果你想向后兼容性,您可以也瞄准sm_13(或sm_1x),上述检查出的文件,了解如何使用-gencode选项NVCC中NVCC一个调用针对多种架构.
关于性能,需要注意的一点是sm_1x不支持IEEE754浮点,所以如果你定位sm_13并在具有Compute Capability 2.0或更高版本的设备上运行,那么你可能会发现浮点数运行得更快,因为它使用的是较少的准确的路径.您也可以使用-ftz=true -prec-div=false -prec-sqrt=false选项强制使用sm_20或更高版本的不太准确的路径,有关详细信息,请参阅"CUDA编程指南"的5.4.1节.
| 归档时间: |
|
| 查看次数: |
19945 次 |
| 最近记录: |