Performance sm级别:1.3 vs 2.0性能

Performance sm级别:1.3 vs 2.0性能,performance,cuda,Performance,Cuda,我的代码不依赖于sm级别。如果我愿意,我可以用sm10构建它。但是当我尝试用1.3而不是2.0构建它时,就像我以前做的那样,我在没有代码更改的情况下获得了x1.25的性能! sm20->35ms sm13->25ms 在那华丽的结果之后,我尝试在project settings->CUDA settings->all:)中对每个选项进行框选/取消框选。我想,我找到了这些东西,这使得速度惊人: 如果我使用sm13“无快速数学生成”(进一步fm-fast 数学),我有25毫秒 如果我使用sm13和

我的代码不依赖于sm级别。如果我愿意,我可以用sm10构建它。但是当我尝试用1.3而不是2.0构建它时,就像我以前做的那样,我在没有代码更改的情况下获得了x1.25的性能! sm20->35ms sm13->25ms

在那华丽的结果之后,我尝试在project settings->CUDA settings->all:)中对每个选项进行框选/取消框选。我想,我找到了这些东西,这使得速度惊人:

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

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

< P>除了在发布模式中编译之外,如@ Robert Crovella所指出的,你也应该考虑到当你瞄准SM13时,编译器能够简化一些浮点数学。默认情况下,sm_20及更高版本支持精确除法、精确平方根和非规范化


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

是否使用visual studio?如果是,您是在编译project的调试版本还是发布版本?是的,visual studio。我用调试版本测试了这两个(13和20)。这对我的问题很重要吗如果您希望GPU代码快速运行,则不应使用调试版本。调试版本中使用的
-G
开关经常会使GPU代码运行变慢。我当然知道,但我仍然调试它,因为它还没有完成。我偶然发现的25ms:35ms功能,但我想知道,为什么会这样?p、 s尝试在发布版本中立即编译它以进行测试,并获得“致命错误LNK1561:必须定义入口点”。。。当然定义了主要功能。在调试版本中,一切都很好。第二个问题(出现)是发布版发生了什么?第二个问题不推荐:)在发布版中构建它。