CUDA经线发散和时钟周期

0 cuda

我在具有8个SP的SM上读到,在执行一条指令期间,warp中的每个线程都映射到8个SP中的每一个.因此,在32/8 = 4个时钟周期中执行扭曲.

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

如果出现分歧,完成if-else语句需要多少个时钟周期?它是2,还是应该是2 x 4 = 8?(即在后者中,每个季度经线2个周期)

感谢任何澄清!

Pau*_*l R 6

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