GPU程式設計

關於GPU的記憶體合併存取(coalescing),下列說明何者正確?

  1. A將兩個GPU的記憶體合而為一,使容量加倍
  2. B壓縮記憶體的資料以增加容量
  3. C當線程束中相鄰的執行緒讀取相鄰的位址時,可合併為較少次數的記憶體存取
查看答案與解析

正確答案:C. 當線程束中相鄰的執行緒讀取相鄰的位址時,可合併為較少次數的記憶體存取

GPU的記憶體是以32位元組或128位元組等成塊的單位進行讀寫。當線程束的32個執行緒各自讀取連續位址的4位元組時,合計128位元組的區塊只需1次到數次的存取即可讀完。若位址分散,每個執行緒就得讀取不同的區塊,連用不到的資料也一併搬運,有效頻寬會降到原來的幾分之一。

  • A. 說的不是合併容量。
  • B. 與壓縮無關。
  • C. 正確。這是有效利用頻寬的基本原則。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 設各執行緒的編號為i,如上式每隔32個元素讀取陣列,會比讀取a[i]時更慢。主要原因為下列何者?
  2. 以GPU處理具有粒子位置x、y、z的資料時,就記憶體合併存取而言,下列何種排列方式較有利?
  3. 關於CUDA共享記憶體(shared memory)的特徵,下列何者正確?
  4. 下列何者是CUDA的__syncthreads()的作用?
  5. 在CUDA中,將__syncthreads()寫在「if (threadIdx.x < 16)」之內,使只有部分執行緒會通過。下列何者是可能發生的情況?

這個領域的比較