2011-05-04 72 views
0

我在理解GPU上的SIMT执行时遇到了一些问题。到目前为止,我已经将这些线程放置在“warps”(例如32个线程/ warp)中。这些线程将是相同的类型,并可以并行运行(但可以独立运行,支持&)。SIMT扭曲问题

我正在阅读的书然后继续混淆我。 '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每个包含一个条件。如果半分支一路和另一半?从我读过的内容来看,线程执行两个结果?这个怎么用?即它如何遵守程序规则

回答

0

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

有条件执行和分支分歧问题已在您的另一个问题中讨论过,因此我不会在此重新提供。