GPU程式設計
以GPU進行兩個大型陣列的逐元素加法(c[i] = a[i] + b[i])時,主要決定效能的是什麼?
- A記憶體頻寬(因為每個元素要讀寫12位元組,而計算只有一次加法)
- B運算單元的數量
- C僅有時脈頻率
查看答案與解析
正確答案:A. 記憶體頻寬(因為每個元素要讀寫12位元組,而計算只有一次加法)
每做一次float的加法,要從a與b各讀4位元組,再寫入c 4位元組,因此是以12位元組的傳輸換取1次計算。GPU每秒可進行數十兆次計算,但記憶體頻寬只有數TB/s左右,所以這種處理的上限是由頻寬決定的。要加快這類處理,有效的做法包括減少資料的讀寫次數,或融合多個處理而不將中間結果寫入記憶體。
- A. 正確。這是運算強度低、受限於記憶體的處理。
- B. 運算單元大部分時間都在等待。
- C. 即使提高頻率,記憶體也跟不上。