【问题标题】:SIMT warp questionSIMT扭曲问题
【发布时间】:2011-08-18 23:08:46
【问题描述】:

我在理解 GPU 上的 SIMT 执行时遇到了一些麻烦。到目前为止,我已经将线程放置在“warp”中(例如 32 个线程/warp)。这些线程将属于同一类型并且可以并行运行(但可以分支和独立运行)。

然后我正在阅读的书继续让我感到困惑。 'It is then up to the instruction unit to select warps that are ready to execute their next instruction, and this instruction is then issued to the active threads of the warp. Each SP core executes an instruction for four individual threads of a warp using four clocks'.

选择的架构有 8 个 SP,每个 warp 有 32 个线程。因此,每个 SP 被分配了 4 个线程。为什么不只分配 1 个线程/SP? “使用四个时钟”是什么意思?每条指令是否需要 1 个时钟并执行 4 次(每个线程 1 次)?

我遇到的另一个问题是,如果你有一个带有 32 个线程的扭曲,每个线程都包含一个条件。如果一半分支一条路,另一半分支怎么办?从我读到的,线程执行两个结果?这是如何运作的?即它如何遵守程序规则

【问题讨论】:

    标签: gpu


    【解决方案1】:

    之所以出现“使用四个时钟”部分(在 NVIDIA g80/g90/g200 系列 GPU 的背景下)是因为每个内核实际上都是一个标量 ALU。它每个时钟只能处理来自单个线程的单个指令。因此,要为 32 个线程的 warp 退出一条指令,每条指令在四个时钟上执行四次(或执行指令的时钟数的四倍,有些需要比单个周期更长的时间)。它比这更复杂一些,因为某些指令组合可以双重发出,但希望你明白这一点。在计算 2.0 Fermi 部件上,每个周期两次发出两个半经线,因此 32 个核心每两个周期退出两个经线。在计算 2.1 Fermi 部件上,有 48 个内核,具有相同的双发布方案,加上来自活动扭曲之一的附加指令(如果可用),使多处理器无序。

    条件执行和分支分歧问题已经在你的另一个问题中讨论过了,这里不再赘述。

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多