GPU程式設計

想以每個區塊256個執行緒、每個執行緒處理一個元素的方式,處理元素數為1000的陣列。下列何者是應啟動的區塊數?

  1. A3
  2. B4
  3. C1000
查看答案與解析

正確答案:B. 4

1000÷256≒3.9,若無條件捨去取3個區塊,則只能處理到256×3=768個元素,其餘會被遺漏。應無條件進位,啟動4個區塊(1024個執行緒),並讓多出來的24個執行緒什麼都不做。一般以「(n + 256 - 1) / 256」的方式計算來進位。為避免多餘的執行緒讀寫陣列範圍之外,必須在核心函式中檢查編號。

  • A. 3個區塊只能處理768個元素。
  • B. 正確。1000÷256無條件進位為4。
  • C. 把區塊數與執行緒數搞混了。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 上述CUDA核心函式中加入「if (i < n)」的理由,下列何者正確?
  2. 在NVIDIA的GPU中,將32個執行緒組成一束並同時執行相同指令的單位稱為什麼?
  3. 關於GPU的SIMT(單一指令、多執行緒)方式與CPU的SIMD指令之差異,下列何者正確?
  4. 在一個線程束中,因條件分支使一半的執行緒走if側、另一半走else側(線程束發散,warp divergence)。一般會如何執行?
  5. 上述的(1)與(2)都是讓一半的執行緒執行A、其餘執行B。就線程束的效率而言,下列何者說明正確(設1個線程束為32個執行緒)?

這個領域的比較