GPU程式設計

假設GPU的SM中有一個發出指令的機制,每個週期可從一個線程束發出指令。各線程束重複「發出20個週期份的指令後,等待400個週期直到記憶體讀取的結果送達」。若切換線程束不需時間,要以延遲隱藏(Latency hiding)消除記憶體等待造成的閒置時間,最少需要幾個線程束?

  1. A21個
  2. B2個
  3. C420個
查看答案與解析

正確答案:A. 21個

一個線程束每420個週期(20+400)只能發出20個週期的指令。要讓發出指令的機制不休息,需要420÷20 = 21個線程束輪流發出指令:當一個線程束等待400個週期時,其他20個線程束各以20個週期的指令填補。線程束不足時,等待時間就會反映在效能上,運算單元會閒置。實際GPU所需的數量會隨等待的長度與指令的排列而改變,也可以增加同一線程束內互不相依的指令(指令層級平行性)來填補等待。

  • A. 正確。(20+400)÷20 = 21個。
  • B. 另一個線程束的20個週期,無法填補一個線程束400個週期的等待。
  • C. 420是一個線程束重複的週期(週期數),不是線程束的數量。
練習這個領域 前往領域頁面

相關計算工具

GPU程式設計的其他題目

  1. 關於CPU與GPU設計理念的差異,下列何者正確?
  2. 下列何者最適合作為GPU能快速處理之工作的特徵?
  3. 下列何者是在GPU上執行時容易效率不佳的處理?
  4. 關於CUDA等GPU程式設計所稱的「核心函式(kernel)」,下列說明何者正確?
  5. 下列何者是CUDA執行緒階層的正確組合(由大到小)?

這個領域的比較