GPU程式設計

當程式持續啟動數千次非常小的核心函式而變慢時,下列何者是最適當的改善方法?

  1. A將多個小的核心函式合併(融合)為一個,以減少啟動次數
  2. B在核心函式的啟動之間加入等待時間
  3. C將每個區塊的執行緒數設為1
查看答案與解析

正確答案:A. 將多個小的核心函式合併(融合)為一個,以減少啟動次數

啟動核心函式時,CPU端的處理與GPU的準備工作需要數微秒左右的固定時間。若核心函式的內容比這更短,就只會凸顯出啟動的開銷。將多個處理合併為一個核心函式,不僅啟動次數會減少,也能省去將中間結果寫入記憶體再讀回的工夫。另外也會使用將一連串的啟動先記錄下來再一次送出的機制(如CUDA Graphs)。

  • A. 正確。減少每次啟動的固定開銷。
  • B. 加入等待時間只會更慢。
  • C. 這等於放棄了GPU的平行性。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 關於CUDA的統一記憶體(unified memory),下列說明何者正確?
  2. 以GPU進行兩個大型陣列的逐元素加法(c[i] = a[i] + b[i])時,主要決定效能的是什麼?
  3. 在多數家用的遊戲用GPU中,雙精度(FP64)的運算效能遠低於單精度(FP32)(約為數十分之一等)。下列何者是最適當的理由?
  4. 關於近年GPU所搭載的張量核心(Tensor Core,矩陣運算單元)的特徵,下列何者正確?
  5. 在GPU的混合精度計算中,常以FP16等低精度進行乘法,而以FP32進行加總(累加)。下列何者是其正確的理由?

這個領域的比較