GPU程式設計

下列何者是GPU隱藏記憶體長延遲(數百個時脈)的主要方法?

  1. A每個執行緒各自擁有比CPU大上數倍的快取
  2. B在某個線程束等待記憶體期間,切換到其他可執行的線程束,讓運算單元持續運作
  3. C不等待記憶體,而是推測資料的值來進行計算
查看答案與解析

正確答案:B. 在某個線程束等待記憶體期間,切換到其他可執行的線程束,讓運算單元持續運作

CPU以大型快取與複雜的電路來減少單一執行緒的等待,而GPU則是載入大量的線程束,將等待記憶體的線程束擱置一旁,發出另一個可立即執行之線程束的指令。由於暫存器全都在晶片上,切換並不費事。只要有足夠數量的線程束,即使在記憶體延遲期間,運算單元也不必休息。

  • A. 每個執行緒的快取反而很小。
  • B. 正確。以大量執行緒來填補等待時間。
  • C. 並不會推測資料的值來計算。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 關於GPU的佔用率,下列何者正確?
  2. 在CUDA中,關於區塊與SM(串流多處理器)的關係,下列何者正確?
  3. 在CUDA中,想在核心函式途中,等待其他所有區塊的計算結束後再進入下一階段。下列何者是一般的方法?
  4. 以GPU製作像素值的直方圖時,若所有執行緒都用atomicAdd直接對全域記憶體中的256個分格(bin)進行加總,有時會很慢。下列何者是正確的改善方法?
  5. 以GPU求取大量數值的總和時,使用樹狀歸約(reduction,重複將相鄰的值相加而使數量減半)的理由,下列何者正確?

這個領域的比較