GPU程式設計
以GPU轉置大型矩陣(b[j][i] = a[i][j])時,經由共享記憶體的主要目的為下列何者?
- A將轉置的計算次數減半
- B在共享記憶體中重新排列矩陣的值,使其由小到大
- C將圖塊以合併存取沿著列的方向讀入,在共享記憶體中轉換方向,使寫入也成為合併存取
查看答案與解析
正確答案:C. 將圖塊以合併存取沿著列的方向讀入,在共享記憶體中轉換方向,使寫入也成為合併存取
若照樸素的寫法,沿著列的方向讀取a雖然是合併存取,但寫入b時會變成沿著欄的方向,位址零散而變慢。若先將圖塊讀入共享記憶體,再交換執行緒的分工後讀出,對全域記憶體的讀取與寫入就都能使用連續的位址。此時為了避免共享記憶體在欄方向讀出時發生記憶庫衝突,還會搭配多配置一欄的做法。
- A. 轉置只是搬移值,不是計算次數的問題。
- B. 並不是在重新排列(排序)值。
- C. 正確。讓讀取與寫入都使用連續的位址。