SIMT扭曲问题

时间:2011-05-04 23:37:53

标签: gpu gpu-programming

我在GPU上理解SIMT执行时遇到了一些麻烦。到目前为止,我已经将线程放在'warps'中(例如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个线程的warp,每个线程都包含一个条件。如果半分支单向和另一半?从我读过的,线程执行两个结果?这是如何运作的?即它如何遵守程序规则

1 个答案:

答案 0 :(得分:0)

'使用四个时钟'部分(在NVIDIA g80 / g90 / g200系列GPU中)出现,因为每个核心实际上是标量ALU。它每个时钟只能处理来自单个线程的单个指令。因此,为了使用32个线程的warp的指令退出,每个指令在四个时钟上执行四次(或者执行指令的时钟数量的四倍,有些需要比一个周期更长的时间)。它有点复杂,因为某些指令组合可以双重发布,但希望你能得到这个想法。在计算2.0费米零件上,每个周期双发出两个半经线,因此32个核心每两个周期退出两个经线。在计算2.1费米器件上,有48个内核,具有相同的双发布方案,加上来自其中一个有源经线的附加指令(如果可用),使多处理器无序。

条件执行和分支差异问题在你的另一个问题中有所涉及,所以我不会在这里重复。