2012-09-08 43 views
5

我正在寫一個OpenCL內核,它涉及到循環中的幾個障礙。我已經在CPU(8核FX8150)上測試了內核,結果顯示這些障礙將運行速度降低了50〜100倍(我通過使用多線程+ CyclicBarrier在Java上重新實現內核進一步驗證了這一點) 。我懷疑原因是障礙,從本質上阻止了CPU利用無序執行,所以我有點擔心如果我觀察到GPU的速度降低幅度相同。我查了一些官方文件並搜索了一下,但有關此主題的信息很少。現代GPU(例如Fermi/Evergreen)是否支持亂序執行?

+0

因爲它有。您應該通過代碼來異構地分割耗時的fpu計算,因此它可以執行整數計算。同時做漂浮 –

+0

@tuğrulbüyükışık謝謝。你能否指出一個證明這一點的官方文件(僅供參考)? – aaronqli

回答

7

當前國家的本領域GPU是有序流水線處理器。 GPU通過交織來自不同經紗(波前)的指令來有效地填充管道。在比較中,CPU使用亂序推測執行來填充管道。有不同的功能單元,如分離管道的ALU和SFU。但請注意,指令依賴性會阻止變形。有關在GPU上指令依賴關係解析的更多信息,請參閱this NVIDIA patent