GPU程式設計

下列何者是CUDA的__syncthreads()的作用?

  1. A讓GPU的所有執行緒跨區塊互相等待
  2. B讓同一區塊的所有執行緒等待到全部抵達該處,並使此前對共享記憶體的寫入可被看見
  3. C使CPU與GPU的時脈同步
查看答案與解析

正確答案:B. 讓同一區塊的所有執行緒等待到全部抵達該處,並使此前對共享記憶體的寫入可被看見

在使用共享記憶體的處理中,必須先讓某個執行緒的寫入完成,其他執行緒才能讀取其寫入的值。__syncthreads()會讓區塊中的所有執行緒等到全部抵達此處為止,因此可以保證例如「全員都將資料讀入共享記憶體後,才開始計算」這樣的順序。可互相等待的只限於同一區塊的執行緒。

  • A. 無法進行跨區塊的同步。
  • B. 正確。這是區塊內的屏障同步。
  • C. 並不是用來校準時脈的功能。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 在CUDA中,將__syncthreads()寫在「if (threadIdx.x < 16)」之內,使只有部分執行緒會通過。下列何者是可能發生的情況?
  2. 關於CUDA共享記憶體的記憶庫衝突(bank conflict),下列說明何者正確?
  3. 將32×32的float表格放在共享記憶體中,由線程束的32個執行緒沿著行的方向(縱向)讀取時會發生記憶庫衝突。下列何者是常用的對策?
  4. 以GPU計算大型矩陣的乘積時,將矩陣分成小的圖塊(tile)讀入共享記憶體,其理由下列何者正確?
  5. 在GPU核心函式中,若每個執行緒的暫存器使用量過多,下列何者是可能發生的情況?

這個領域的比較