GPU程式設計

在使用單一GPU的程式中,關於CPU端記憶體與GPU端記憶體,下列何者通常是正確的?

  1. A由於是各自獨立的記憶體,因此在計算之前要將資料複製到GPU,結束後再將結果複製回CPU
  2. B由於是相同的記憶體,因此完全不需要複製
  3. CGPU無法儲存計算的結果
查看答案與解析

正確答案:A. 由於是各自獨立的記憶體,因此在計算之前要將資料複製到GPU,結束後再將結果複製回CPU

獨立式GPU在顯示卡上具有GDDR或HBM的專用記憶體,與CPU的記憶體則是透過PCI Express等連接。因此基本流程是:先將CPU記憶體中的資料複製到GPU的記憶體後再啟動核心函式,結束後再將結果複製回CPU的記憶體。這段複製的時間往往會左右整體的效能。

  • A. 正確。以cudaMemcpy等進行複製。
  • B. 獨立式GPU擁有自己專用的記憶體。
  • C. 可以將結果寫入GPU的記憶體。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 對於只對陣列元素做一次加法這類輕量的處理,若將資料傳送到GPU,有時會比用CPU計算還慢。下列何者是主要原因?
  2. 將CPU記憶體固定(鎖頁,page-lock)後再傳輸到GPU會比較快,其理由下列何者正確?
  3. 下列何者是使用多個CUDA串流(stream)的主要目的?
  4. 當程式持續啟動數千次非常小的核心函式而變慢時,下列何者是最適當的改善方法?
  5. 關於CUDA的統一記憶體(unified memory),下列說明何者正確?

這個領域的比較