2010-11-26 67 views
0

我读到一个带有8个SP的SM,一个warp中的每个线程在执行一条指令期间映射到8个SP中的每一个。因此,在32/8 = 4个时钟周期中执行扭曲。CUDA扭曲发散和时钟周期

如果是这样,那么假设我在代码中有一个if-else语句。假设“then”和“else”分支指令每个需要一个时钟周期才能完成。

如果发散发生,需要多少个时钟周期才能完成if-else语句?它是2还是应该是2 x 4 = 8? (即在后者中,每个四分之一经线2个周期)

欣赏任何澄清!

回答

6

粒度为4个时钟周期 - 有4个指令阶段,每个阶段处理8个线程的相同指令(如果有条件/分支,可以选择屏蔽),这就是32个线程执行一条指令的方式每4个时钟周期。因此,对于你的例子中的分歧分支,一个分支至少有4个时钟,另一个分支至少有4个时钟。