什么是"其他"问题由Nsight剖析器显示的失速原因?

Rog*_*ahl 6 profiling cuda

我有一个内核在CC 3.0(开普勒)上表现不佳而不是CC 2.0(费米).在Nsight剖析器中,Warp Issue Efficiency图表显示60%的时间,没有符合条件的扭曲,Issue Stall Reasons图表显示其中60%是由于"其他".

我想知道其他问题的失速原因是什么以及我可以做些什么来减少它们.

CUDA 5.0./ Nsight 3.0.RC/CC 3.0.

发布失速原因

Gre*_*ith 10

在Nsight Visual Studio Edition 3.0 CUDA Profiler中,Issue Efficiency显示了经纱失速原因的饼图.失速原因是指令获取,执行依赖性,数据请求,纹理,同步和其他.

对于Compute Capability 3.*devices其他类别是由于以下原因导致活动warp停顿的时间百分比:

  • 执行单元忙(减少使用低吞吐量整数运算)
  • 注册银行冲突(编译器问题,有时可能通过大量使用矢量数据类型而变得更糟)
  • 每个调度程序的warp太少

对于Compute Capability 5.*和6.*设备,Other类别是由于以下原因导致活动warp停顿的时间百分比:

  • 注册银行冲突(编译器问题,有时可能通过大量使用矢量数据类型而变得更糟)
  • 等待解决分支的扭曲
  • 较低优先级的warp,目前尚未考虑进行调度

对于5.*和6.*,尤其是gp100,如果内核每个warp调度程序达到32个warp,则最后一个原因可能非常高(~75%).

这些停顿原因被分组到另一个类别,因为很难识别开发人员可以采取的解决这些问题的操作.