高性能計算-探究GPU指令延遲隱藏(26)
1. 延遲隱藏作用:可以最大化SM的使用效率,提高計算性能
2. 延遲隱藏概念
(1)指令延遲是指令發出到完成之間的時鐘周期間隔;
(2)指令可以分為兩種:算數指令和訪存指令。
3. 算數指令延遲隱藏實現
(1)假如一個算數指令的指令延遲是 4 個時鐘周期
(2)查詢cuda文檔得到如下計算能力的設備,比如9.0的設備每個時鐘周期對 float16 加法的操作次數為256
(3)計算所需線程束數量為:256*4/32(warpSize) = 32個線程束,所以當有 >= 32 個線程束有條件執行供線程調度器調度的時候,SP的利用率最大,因為GPU線程切換是零開銷的,所以在大量可執行線程束的情況下可以實現計算延遲隱藏。

(4)同理訪存延遲也可以通過增加可調度的訪存線程束來隱藏訪存延時,如下。
4. 訪存指令延時隱藏實現
(1)假如訪存延時為600個時鐘周期,GPU內存頻率為 21GHz,顯存帶寬為 280G/S,每個線程需要讀取 一個 float64 數據。
(2)每個時鐘周期理論最大訪存數據量為:280 / 21 ≈ 13B/clock
(3)隱藏延時期間數據吞吐量應為 600 * 13 = 7800B
(4)所需要的線程數量為 7800 / 8 = 975個
(5)所需要的線程束數量為 975 / 32 = 31個
所以,當滿足線程束的數量 >= 31時,可以隱藏訪存的延時。
5.其他實現方式
(1)以上是通過更多的并發線程實現
(2)實際上有更多的獨立指令也能實現,算數指令和訪存指令都用來彼此的延遲隱藏,比如訪存時可以執行其他線程束的算數指令。

浙公網安備 33010602011771號