什麼是Warp 分歧(Warp divergence)
在同一個 warp 內,因條件分支而使執行緒走的路徑分開的現象。由於會依序執行分開的路徑,效率會下降。
日文名稱: ワープダイバージェンス
「Warp 分歧(Warp divergence)」出現在1領域的1道練習題中(GPU程式設計等)。
這個名詞所屬的領域: GPU程式設計
在同一個 warp 內,因條件分支而使執行緒走的路徑分開的現象。由於會依序執行分開的路徑,效率會下降。
日文名稱: ワープダイバージェンス
「Warp 分歧(Warp divergence)」出現在1領域的1道練習題中(GPU程式設計等)。
這個名詞所屬的領域: GPU程式設計
正確答案:C. 依序執行if側與else側,各自執行期間不符合的執行緒會閒置,因此效率下降
線程束的32個執行緒執行相同指令,因此分支一旦分歧,會先僅讓if側的執行緒有效並執行if側的指令,接著再以其餘執行緒執行else側。結果雖然正確,但各自執行期間有一半的執行緒什麼都沒做,所以時間會是兩條路徑的總和。若能調整資料或執行緒的排列方式,讓線程束內的分支趨於一致,效率就會提升。
平行歸約(Parallel reduction) 共享記憶體(GPU shared memory) 串流多處理器(Streaming multiprocessor) 佔用率(GPU occupancy) 固定記憶體(Pinned memory) 延遲隱藏(Latency hiding) 前綴和(Prefix sum) 記憶體合併存取(Memory coalescing) 記憶體庫衝突(Bank conflict) 執行緒區塊(Thread block)