GPU程式設計

在撰寫GPU核心函式時,下列何者是應遵守的正確前提?

  1. A執行緒必定依編號由小到大,一個一個地執行
  2. B在區塊0結束之前,區塊1必定不會開始
  3. C執行緒或區塊以什麼順序執行並未固定,因此要寫成讓結果不受執行順序左右
查看答案與解析

正確答案:C. 執行緒或區塊以什麼順序執行並未固定,因此要寫成讓結果不受執行順序左右

GPU會將執行緒與區塊陸續分配給空閒的資源,因此執行順序會隨GPU的機型與負載而改變。若某個執行緒仰賴另一個執行緒所寫入的值,即使碰巧能正確運作,在其他環境中也會出錯。需要順序時,區塊內可用__syncthreads(),區塊之間則拆分核心函式,加總則使用原子運算或歸約。

  • A. 許多執行緒是同時運作的,不保證順序。
  • B. 區塊可能同時以任何順序執行。
  • C. 正確。需要順序時就使用同步。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 以GPU轉置大型矩陣(b[j][i] = a[i][j])時,經由共享記憶體的主要目的為下列何者?
  2. 在CUDA中,CPU端的程式啟動核心函式之後,下列何者是一般正確的動作?
  3. 關於CPU與GPU設計理念的差異,下列何者正確?
  4. 下列何者最適合作為GPU能快速處理之工作的特徵?
  5. 下列何者是在GPU上執行時容易效率不佳的處理?

這個領域的比較