GPU上的分支预测

时间:2011-07-05 11:55:27

标签: cuda opencl gpu gpgpu

我对GPU中的分支预测有疑问。据我所知,在GPU中,它们通过分支进行预测。

例如,我有一个这样的代码:

if (C)
 A
else
 B

所以如果A需要40个周期而B需要50个周期才能完成执行,如果假设一个warp,A和B都被执行,那么完成这个分支需要总共90个周期吗?或者它们是否与A和B重叠,即,当执行A的某些指令时,等待存储器请求,然后执行B的某些指令,然后等待存储器,依此类推? 感谢

1 个答案:

答案 0 :(得分:12)

到目前为止发布的所有支持CUDA的架构都像SIMD机器一样运行。当warp中存在分支差异时,两个代码路径都由warp中的所有线程执行,其中没有跟随活动路径的线程执行NOP的功能等价物(我想我记得存在条件执行)标志附加到warp中的每个线程,允许屏蔽非执行线程。

因此,在您的示例中,90个周期的答案可能是比替代方案更接近实际发生的事情。