不同的块如何在同一个SM(流式多处理器)中运行

时间:2016-07-21 20:45:54

标签: parallel-processing cuda gpgpu

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

  1. SM是SIMT(单指令多线程)结构吗?
  2. 假设给定SM中有8个SP。如果可以在同一SM中执行不同的块,则这些SP将具有不同的指令。所以我的理解是:SM会给出不同的SP不同的指令。

    1. 同一个warp中的线程是否同时执行?
    2. 假设给定SM中有8个SP。经线在SM中。由于几个warp可能在SM中运行,我认为4个SP正在运行此warp。此warp中有32个线程,但只有4个SP可以运行它们。所以它实际上需要8个周期来运行这个扭曲? 我也听到有人说经线中的所有线程都是连续运行的。我不知道真相是什么......

1 个答案:

答案 0 :(得分:-1)

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

根据体系结构,SP可以在一个周期内运行单个warp指令,因此同时运行。但是,这仅适用于具有32 SP的SM,因此例如不是双精度。此外,我们无法保证。最后我们经历了配置,其中一些高warp索引的线程在较低的索引之前运行。除了同步函数和其他工具之外,对指令调度程序的行为没有硬性规则。