GPU程式設計
以GPU計算大型矩陣的乘積時,將矩陣分成小的圖塊(tile)讀入共享記憶體,其理由下列何者正確?
- A讓從全域記憶體讀入的資料在共享記憶體中反覆重複使用,減少對慢速記憶體的存取次數
- B縮小矩陣的值,以防止溢位
- C減少計算次數,以近似求出結果
查看答案與解析
正確答案:A. 讓從全域記憶體讀入的資料在共享記憶體中反覆重複使用,減少對慢速記憶體的存取次數
在矩陣乘積中,同一個元素會被反覆用於計算。若照樸素的寫法,每個執行緒每次都得重新從全域記憶體讀取,記憶體頻寬就會不足。若分成圖塊讀入共享記憶體,區塊的所有執行緒就能反覆使用該圖塊,從全域記憶體讀取的量會隨圖塊大小成比例地減少。這與CPU快取上的分塊(blocking)是相同的概念。
- A. 正確。這是提高運算強度的做法。
- B. 值的大小不會改變。
- C. 計算次數相同,結果也很精確。