现代GPU(例如Fermi/Evergreen)是否支持乱序执行?

aar*_*qli 6 parallel-processing cpu gpu

我正在编写一个OpenCL内核,它在循环中涉及一些障碍.我已经在CPU(8核FX8150)上测试了内核,结果显示这些障碍将运行速度降低了50到100倍(我通过使用多线程+ CyclicBarrier在Java上重新实现内核进一步验证了这一点) .我怀疑原因是屏障基本上阻止了CPU利用无序执行,所以如果我在GPU上观察到相同幅度的速度降低,我有点担心.我检查了一些官方文档并搜索了一下,但是关于这个主题的信息很少.

las*_*gar 8

当前最先进的GPU是有序流水线处理器.GPU通过交错来自不同warp(波前)的指令有效地填充管道.在比较中,CPU使用无序的推测执行来填充管道.有不同的功能单元,如ALU和SFU,它们具有分离的管道.但请注意,指令依赖性会使warp失效.有关解决GPU的指令依赖性的更多信息,请参阅此NVIDIA专利.