GPU程式設計

下列何者是在GPU上執行時容易效率不佳的處理?

  1. A從開頭逐一走訪鏈結串列,並依各元素的值改變下一個動作的處理
  2. B兩個大型陣列逐元素相加
  3. C將大型影像所有像素的亮度加倍的處理
查看答案與解析

正確答案:A. 從開頭逐一走訪鏈結串列,並依各元素的值改變下一個動作的處理

鏈結串列在讀取前一個元素之前,無法得知下一個元素的位置,因此無法並行走訪。此外,若動作依值而異,在以相同指令運作的執行緒群組中分支就會分歧,使效率下降。記憶體位置也很分散,無法一次集中讀取。適合GPU的是各元素獨立,且對連續位址的資料進行相同處理的工作。

  • A. 正確。無法並行,分支也會變多。
  • B. 各元素彼此獨立,因此適合GPU。
  • C. 各像素彼此獨立,因此適合GPU。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 關於CUDA等GPU程式設計所稱的「核心函式(kernel)」,下列說明何者正確?
  2. 下列何者是CUDA執行緒階層的正確組合(由大到小)?
  3. 在CUDA核心函式中,以上式求出各執行緒的編號i。blockIdx.x=2、blockDim.x=256、threadIdx.x=5的執行緒,其i為多少?
  4. 想以每個區塊256個執行緒、每個執行緒處理一個元素的方式,處理元素數為1000的陣列。下列何者是應啟動的區塊數?
  5. 上述CUDA核心函式中加入「if (i < n)」的理由,下列何者正確?

這個領域的比較