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

时间:2012-09-08 14:10:44

标签: parallel-processing cpu gpu

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

NVIDIA的新一代产品 CUDA计算和图形架构,代号为“Fermi”:

Nvidia GigaThread Engine具有(第5页)

的功能
  • 应用程序上下文切换速度提高10倍
  • 并发内核执行
  • 乱序线程块执行:)
  • 双重重叠内存传输引擎

Evergreen has SIMD capabilities and has a chance outperform some fermi but i dont know about oooe of it. There is also "local atomic add" upper hand of HD 7000 series compared to GTX 600 series (nearly 10x faster)