GPU程式設計
假設GPU的SM中有一個發出指令的機制,每個週期可從一個線程束發出指令。各線程束重複「發出20個週期份的指令後,等待400個週期直到記憶體讀取的結果送達」。若切換線程束不需時間,要以延遲隱藏(Latency hiding)消除記憶體等待造成的閒置時間,最少需要幾個線程束?
- A21個
- B2個
- C420個
查看答案與解析
正確答案:A. 21個
一個線程束每420個週期(20+400)只能發出20個週期的指令。要讓發出指令的機制不休息,需要420÷20 = 21個線程束輪流發出指令:當一個線程束等待400個週期時,其他20個線程束各以20個週期的指令填補。線程束不足時,等待時間就會反映在效能上,運算單元會閒置。實際GPU所需的數量會隨等待的長度與指令的排列而改變,也可以增加同一線程束內互不相依的指令(指令層級平行性)來填補等待。
- A. 正確。(20+400)÷20 = 21個。
- B. 另一個線程束的20個週期,無法填補一個線程束400個週期的等待。
- C. 420是一個線程束重複的週期(週期數),不是線程束的數量。