2013-02-15 54 views
4

我有一个在CC 3.0(开普勒)上表现不佳的内核,而不是CC 2.0(费米)。在Nsight分析器中,Warp Issue Efficiency图表显示,有60%的时间没有合格的扭曲,图表显示其中60%是由于“其他”造成的。什么是“其他”问题Nsight Profiler显示的问题原因?

我想知道其他问题的原因是什么,我可能会做什么来减少它们。

CUDA 5.0。/Nsight 3.0。 RC/CC 3.0。

Issue Stall Reasons

+0

谢谢你的信息。内核是一个PBKDF2-HMAC-SHA1密钥扩展器。因此,它会运行大量的整数加法和按位运算。特别是,有许多32位整数移位,其开普勒上的吞吐量较低。没有FP操作。我想,在这种情况下,Other是由于低吞吐量的整数操作,所以没有太多的事情要做。 – 2013-02-15 23:52:42

回答

7

在Nsight的Visual Studio 3.0版CUDA探查问题效率显示的翘曲失速的原因的饼图。停顿的原因是取指令,执行依赖,数据请求,纹理,同步和其他。

对于计算能力3. *器件的其它类别是活性经纱由于停滞以下原因的时间的百分比:

  • 执行单元忙(减少使用低吞吐量整数操作)
  • 寄存器组冲突(编译器的问题是有时可通过大量使用矢量数据类型进行最差)每调度
  • 太少经线

计算能力5. *和6 *设备的其他类是主动经纱由于停滞以下原因的时间百分比:

  • 寄存器组冲突(编译器的问题,可有时沉重作出最坏利用矢量数据类型的)
  • 经纱等待解决分支
  • 经线是低优先级和没有被考虑用于调度

对于5. *和6 *,特别是GP100,最后如果内核到达,原因可能非常高(〜75%)每个warp调度程序有32个warp。

由于很难确定开发人员可以采取哪些措施来解决这些问题,因此将这些摊位原因归入其他类别。

+0

...第三个原因似乎对我很有效:“增加块尺寸”。我错了吗? – einpoklum 2017-04-13 15:48:33

+0

工作流首先要看问题的效率。如果60%的周期没有合格的经线,那么增加入住率往往是首先要调查的事情之一。调度程序停顿的原因可以更深入地了解执行问题。增加占用并不一定意味着增加区块尺寸。通常每块更小的经纱是增加每根纱线的经纱的更好方法。 – 2017-04-13 21:20:49

+0

(1)您能举一个最后一句的具体例子,其中“每个调度程序太少的经纱”是失速原因的主导因素(〜50%或更多)?如果是这样,我会提出另一个问题,你可以回答它。 (2)这个列表有三个原因详尽吗? – einpoklum 2017-04-13 21:34:21

相关问题