GPU程式設計

關於CUDA共享記憶體的記憶庫衝突(bank conflict),下列說明何者正確?

  1. A兩個GPU使用同一個銀行帳戶的問題
  2. B共享記憶體容量不足而使程式停止的問題
  3. C共享記憶體分為32個記憶庫(bank),當線程束的多個執行緒同時讀取同一記憶庫中不同的位址時,存取會依序進行而變慢
查看答案與解析

正確答案:C. 共享記憶體分為32個記憶庫(bank),當線程束的多個執行緒同時讀取同一記憶庫中不同的位址時,存取會依序進行而變慢

共享記憶體由每4位元組依序分配的32個記憶庫構成,每個記憶庫一次只能讀寫一個位址。若線程束的32個執行緒使用各不相同的記憶庫,一次即可完成;但若有2個執行緒使用同一記憶庫的不同位址,就會分成2次。例如每隔32個元素讀取時,全員會集中在同一個記憶庫,而被分成32次。若全員讀取同一個位址,則是一併廣播,因此不會衝突。

  • A. 說的不是金錢的事。
  • B. 不是容量的問題。
  • C. 正確。若為相同位址,則可一併廣播,因此不會衝突。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 將32×32的float表格放在共享記憶體中,由線程束的32個執行緒沿著行的方向(縱向)讀取時會發生記憶庫衝突。下列何者是常用的對策?
  2. 以GPU計算大型矩陣的乘積時,將矩陣分成小的圖塊(tile)讀入共享記憶體,其理由下列何者正確?
  3. 在GPU核心函式中,若每個執行緒的暫存器使用量過多,下列何者是可能發生的情況?
  4. 關於GPU的佔用率(occupancy),下列說明何者正確?
  5. 下列何者是GPU隱藏記憶體長延遲(數百個時脈)的主要方法?

這個領域的比較