【问题标题】:what is difference between "-arch sm_13" and "-arch sm_20"“-arch sm_13”和“-arch sm_20”有什么区别
【发布时间】:2012-05-07 00:21:36
【问题描述】:

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

Q1:“-arch sm_13”和“-arch sm_20”有什么区别?

Q2:“-arch sm_13”和“-arch sm_20”在性能上有区别吗?

我的 GPU:GTX 570。

谢谢。

【问题讨论】:

  • 您需要使用 sm_20。 sm_13 用于计算 1.3 卡。
  • 就这么简单?计算能力 2.0 --> sm_20,计算能力 1.3 --> sm_13?

标签: cuda gpu


【解决方案1】:

SM 代表 Streaming Multiprocessor,数字表示架构支持的功能。你可以在CUDA Programming Guide 3.1.2-3.1.4 部分找到一个很好的描述,你可以在附录 F 的表格中看到与每个架构相关的特性。

来自NVCC manual(也包含在工具包中):

为了实现架构演进,NVIDIA GPU 发布于 不同的世代。新一代引入了重大改进 功能和/或芯片架构,而 GPU 模型在同一 代显示“适度”影响的微小配置差异 功能、性能或两者兼而有之。

您的 GPU 具有 Compute Capability 2.0,因此您应该使用 sm_20 使编译器能够使用旧架构中不可用的功能。如果您想要向后兼容,您可以以 sm_13(或 sm_1x)为目标,查看上面的文档以了解如何使用 nvcc 的 -gencode 选项在一次调用 nvcc 时针对多个架构。

关于性能,需要注意的一件事是 sm_1x 不支持 IEEE754 浮点,因此如果您以 sm_13 为目标并在具有 Compute Capability 2.0 或更高版本的设备上运行,那么您可能会发现浮点运行得更快,因为它是使用不太准确的路径。您还可以通过使用-ftz=true -prec-div=false -prec-sqrt=false 选项来强制使用 sm_20 或更高版本的不太准确的路径,有关更多信息,请参阅 CUDA 编程指南中的第 5.4.1 节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多