【问题标题】:Number of active warps in GPU (Fermi)GPU 中的活动扭曲数(费米)
【发布时间】:2011-07-13 08:14:46
【问题描述】:

我有一个关于 GPU 中的活动扭曲的快速问题(我更愿意在 Fermi 中了解它)。 对于特定内核,SM 中任何周期的活动扭曲数对于内核的整个执行时间是否相同? 正如我所试验的那样,活动扭曲的总数(对于整个执行)和程序内核中的同步数之间存在一些相关性。谁能澄清这种关系? 谢谢

【问题讨论】:

    标签: cuda opencl gpu gpgpu


    【解决方案1】:

    活动扭曲的数量可能会随时间变化,因为:

    • 其他线程块可以在同一个 SM 上完成或开始,因此如果每个线程块有 4 个线程块,那么如果 SM 上只有一个线程块,则最多可以有 4 个线程块,但如果有 2 个或 3 个线程块,则最多可以有 4 个线程块到八或十二个。
    • 如果 warp 到达其代码的末尾,那么它将不再执行代码(自然)

    整个程序执行的活动 warp 计数取决于许多因素,但请记住,它会随着每个周期的活动 warp 数量而增加。这意味着如果您增加同步次数,这也会增加每个 warp 执行内核所需的周期数,那么您会期望更高的活动 warp 计数。

    另外请注意,探查器中的一些派生统计数据是近似的,因为它们经常使用来自不止一次运行的值,因此可能存在一些可变性。

    【讨论】:

    • 感谢您的明确答复。任何其他添加或 cmets 将不胜感激!
    • 让我再问一点。每个线程都有特定数量的共享内存和寄存器,我们知道有多少扭曲可以同时处于活动状态。但是,由于每条经线的长度可能不同,因此有的可以更快地终止另一个。那么调度器是否会从其他线程块发出指令呢?还是等到活动块中的所有经线都完成后,再激活一组完全不同的块?
    【解决方案2】:

    barrier 同步和 wrap 的关系在这篇论文中有解释, Demystifying GPU Microarchitecture through Microbenchmarking.

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多