【问题标题】:How do SM(streaming multiprocessors), active blocks and active warps behave in GPU?SM(流式多处理器)、活动块和活动扭曲在 GPU 中如何表现?
【发布时间】:2018-12-25 23:47:06
【问题描述】:
  1. 假设您的 GPU 有 8 个 SM。那么如果你执行一个有足够多的块(比如说 200 个)的 CUDA 内核,是否会使用所有 8 个 SM 来执行?

现在只考虑一个 SM。假设有 8 个活动块,每个块有 256 个线程(8 个线程/块)。 Max active warps=64.

  1. 内核启动后,8 个活动块会并行处理吗?

  2. 我知道,warp 将由每个 SM 中的调度程序进行调度。这意味着warp不会并行执行,而是并发执行。

这是我真正的问题。我遇到了特定内核的低延迟问题。这是限制因素。 我只想知道这种情况下的最佳调整是什么。因为如果活动块没有至少同时执行,那么增加活动块的数量是没有意义的。因为,至少有 64 个活动扭曲的活动块会表现得更好(忽略寄存器限制,因为我可以相应地调整它)。

【问题讨论】:

  • 1.是的,2. 取决于内核所需的内核和资源以及 GPU 上可用的资源。 3. 根据数据可用性,最多可以同时执行 2048 个线程,但不是所有指令同时执行:交错每个 warp 的可执行 warp 指令。想想同步线程的可行性。
  • 在运行单个内核时,您与 (2) 和 (3) 相关的场景是不可能的。
  • 为什么说第2和第3不可能? - 爪子
  • 我接受 1 和 3 的答案。但在第 2 次中,我试图提到有 12 个活动块,这意味着有足够的寄存器、共享内存和最大线程数来拥有 12 个活动块。我想知道这 12 个块是否也像扭曲一样并发执行,还是像 SM 一样并行执行 - Florent DUGUET
  • 将 (2) 更改为 8 块 8 经线/块或 12 块 4 经线。假设满足所有资源限制,所有块/warp 将同时驻留在 SM 3.0-7.0 上,并且每个 SM warp 调度程序(每个 SM 4 个)将分配 1/4 的 warp。在每个周期,warp 调度程序将选择最符合条件的活动 warp 并执行 1-2 条指令(取决于架构)。 1 个 SM 的最大指令问题并行度为 4 个扭曲。飞行平行度的最大指令等于 64 经线的 SM 限制。

标签: parallel-processing cuda gpu


【解决方案1】:

假设满足所有资源限制,所有块/warp 将同时驻留在 SM 3.0-7.0 上,并且每个 SM warp 调度程序(每个 SM 4 个)将分配 1/4 的 warp。在每个周期,warp 调度程序将选择最符合条件的活动 warp 并执行 1-2 条指令(取决于架构)。 1 个 SM 的最大指令问题并行度为 4 个扭曲。飞行中指令的最大 warp 并行度是 64 warp 的 SM 限制。

每个 SM 的最佳扭曲数将随指令组合、资源要求和内存访问模式而变化。分析器可用于确定配置是否有足够的扭曲来隐藏延迟。增加扭曲会牺牲寄存器,但会增加潜在的延迟隐藏。增加每个块的扭曲可以增加扭曲之间的数据共享,但如果内核具有尾部效应,则可能导致较低的占用率,或者如果大量使用屏障,则可能导致较低的合格扭曲。在这些情况下,建议减少每块的扭曲。如果内核不使用共享内存,则建议使用更小的块大小(256 个线程/块)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2011-07-14
    • 2012-08-26
    相关资源
    最近更新 更多