sm级:1.3 vs 2.0性能

时间:2013-12-20 04:26:58

标签: performance cuda

我的代码不依赖于sm级别。我可以用sm10构建它,如果我想要的话。但是当我尝试使用1.3而不是2.0来构建它时,正如我之前所做的那样,我获得了x1.25的性能而没有代码更改!  sm20 - > 35MS  sm13 - > 25ms的

在那个华丽的结果之后,我试图在项目设置中打开/取消选中每个选项 - > CUDA设置 - > 所有 :)我想,我发现了这些东西,这让它变得非常棒:

  • 如果我使用sm13“没有快速数学生成”(进一步fm - 快速 数学),我有25ms
  • 如果我使用sm13和fm,我有25ms
  • sm20没有fm = 35ms
  • sm20,fm = 25ms(结果相同)

为什么会这样?也许sm13强制使用硬件数学,但sm20不是吗?或者只是巧合,而后者的sm级别性能较低,请参考较低的sm级别的程序?

1 个答案:

答案 0 :(得分:2)

除了在发布模式下进行编译之外,正如@Robert Crovella所指出的那样,你还应该考虑当你以sm_13为目标时,编译器能够简化一些浮点数学运算。 sm_20及更高版本默认支持精确分割,精确平方根和非正规。

您可以尝试使用命令行选项-ftz=true -prec-div=false -prec-sqrt=false禁用这些功能。有关详细信息,请参阅best practices guide