【问题标题】:How can different blocks run in a same SM(streaming multiprocessor) [duplicate]不同的块如何在同一个 SM(流式多处理器)中运行 [重复]
【发布时间】:2016-11-25 15:03:46
【问题描述】:

我已经阅读了这两页:Understanding Streaming Multiprocessors (SM) and Streaming Processors (SP)How Concurrent blocks can run a single GPU streaming multiprocessor? 但我还是对硬件结构感到困惑。

  1. SM 是 SIMT(单指令多线程)结构吗?

假设给定的 SM 中有 8 个 SP。如果不同的块可以在同一个 SM 中执行,这些 SP 将有不同的指令。所以我的理解是:SM会给不同的SP不同的指令。

  1. 同一个warp中的线程是否同时执行?

假设给定的 SM 中有 8 个 SP。经线在 SM 中。由于 SM 中可能运行多个经线,我想有 4 个 SP 正在运行此经线。这个 warp 中有 32 个线程,但只有 4 个 SP 可以运行它们。所以运行这个扭曲实际上需要 8 个周期? 我还听有人说,warp 中的所有线程都是串行运行的。我不知道真相是什么......

【问题讨论】:

标签: parallel-processing cuda gpgpu


【解决方案1】:

多个块可以在单个 SM 中运行。根据this 演示文稿(幻灯片 19 - 感谢@RobertCrovela),可以从不同的内核发出块。当从同一个内核运行时,块索引可以看作是线程索引的补充级别,有一定的限制(每个架构和内核不同)。但是,我从未体验过在给定 SM 上同时运行两个不同的流。

根据体系结构,SP 可以在单个周期中运行单个 warp 指令,因此同时运行。但是,这仅适用于具有 32 SP 的 SM,因此不适用于例如双精度。此外,对此也没有任何保证。最后,我们体验了一些配置,一些高翘曲指数的线程在低指数之前运行。除了同步功能和其他工具,指令调度器的行为没有硬性规定。

【讨论】:

  • 看看幻灯片 19 here - 来自不同内核的块可以驻留在同一个 SM 上。它可能或多或少与并发内核一样难以演示。
  • @RobertCrovella,感谢这次更新,我会根据你对不同内核的评论更改答案。但是,你能指出一个例子来说明这一点吗?如前所述,我从未经历过。
  • 不费吹灰之力就能演示。如果你想在这里问一个关于 SO 的新问题,请求这样的演示,我会提供我所拥有的。我不会尝试在评论空间中涵盖它。不,我无法为您指出网络上某个地方的现成示例。
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 2012-08-26
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多