GPU程式設計

關於GPU的SIMT(單一指令、多執行緒)方式與CPU的SIMD指令之差異,下列何者正確?

  1. ASIMT對一筆資料同時執行多個指令,SIMD則對一筆資料執行一個指令
  2. BSIMT與SIMD完全相同,只是名稱不同
  3. CSIMT可將各執行緒寫成獨立的程式,分支也由硬體處理,而SIMD則需由程式設計師或編譯器明確使用寬度固定的向量指令
查看答案與解析

正確答案:C. SIMT可將各執行緒寫成獨立的程式,分支也由硬體處理,而SIMD則需由程式設計師或編譯器明確使用寬度固定的向量指令

CPU的SIMD是對集結了4個或8個資料的向量暫存器施加一個指令,因此撰寫程式時必須留意向量的寬度。GPU的SIMT則是程式設計師照一般方式撰寫一個執行緒的處理,再由硬體每32個一組,以相同指令運作。各執行緒也可以分支,硬體會依序執行分歧出的路徑,但此時效率會下降。

  • A. 兩者都是對多筆資料執行一個指令。
  • B. 程式的撰寫方式與分支的處理方式不同。
  • C. 正確。內部雖以相同指令運作,但撰寫方式不同。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 在一個線程束中,因條件分支使一半的執行緒走if側、另一半走else側(線程束發散,warp divergence)。一般會如何執行?
  2. 上述的(1)與(2)都是讓一半的執行緒執行A、其餘執行B。就線程束的效率而言,下列何者說明正確(設1個線程束為32個執行緒)?
  3. 關於GPU的記憶體合併存取(coalescing),下列說明何者正確?
  4. 設各執行緒的編號為i,如上式每隔32個元素讀取陣列,會比讀取a[i]時更慢。主要原因為下列何者?
  5. 以GPU處理具有粒子位置x、y、z的資料時,就記憶體合併存取而言,下列何種排列方式較有利?

這個領域的比較