什麼是CUDA

在 NVIDIA 的 GPU 上進行通用運算的程式設計機制。以擴充 C++ 的語言撰寫核心函式,並以網格、區塊、執行緒的階層表示平行性。

日文名稱: CUDA

「CUDA」出現在1領域的18道練習題中(GPU程式設計等)。

這個名詞所屬的領域: GPU程式設計

練習CUDA的題目

關於CUDA等GPU程式設計所稱的「核心函式(kernel)」,下列說明何者正確?

  1. AGPU作業系統的核心部分
  2. B在GPU上由大量執行緒同時執行的函式
  3. C冷卻GPU晶片的零件
查看答案與解析

正確答案:B. 在GPU上由大量執行緒同時執行的函式

GPU程式設計中的核心函式(kernel),是由CPU端的程式啟動,並由GPU上的大量執行緒執行相同程式碼的函式。各執行緒使用自己的編號來選擇負責的資料元素。例如陣列相加時,將核心函式寫成由一個執行緒加總一個元素,再依元素數量啟動執行緒。雖然與作業系統的核心(kernel)用語相同,但意義不同。

下列何者是CUDA執行緒階層的正確組合(由大到小)?

  1. A網格 → 區塊 → 執行緒
  2. B執行緒 → 區塊 → 網格
  3. C區塊 → 執行緒 → 網格
查看答案與解析

正確答案:A. 網格 → 區塊 → 執行緒

啟動一次核心函式後,整體成為網格(grid),網格分為許多區塊(block),區塊再分為許多執行緒。同一個區塊的執行緒會在同一個SM(運算單元的集合)上執行,可透過共享記憶體合作並進行同步。不同的區塊則獨立執行,因此同時運作的區塊數量會隨GPU的規模而變,同一個程式可在大小不同的GPU上執行。

解析中的「CUDA」

出現「CUDA」的題目(18題)

  1. 關於CUDA等GPU程式設計所稱的「核心函式(kernel)」,下列說明何者正確?
  2. 下列何者是CUDA執行緒階層的正確組合(由大到小)?
  3. 在CUDA核心函式中,以上式求出各執行緒的編號i。blockIdx.x=2、blockDim.x=256、threadIdx.x=5的執行緒,其i為多少?
  4. 上述CUDA核心函式中加入「if (i < n)」的理由,下列何者正確?
  5. 關於CUDA共享記憶體(shared memory)的特徵,下列何者正確?
  6. 下列何者是CUDA的__syncthreads()的作用?
  7. 在CUDA中,將__syncthreads()寫在「if (threadIdx.x < 16)」之內,使只有部分執行緒會通過。下列何者是可能發生的情況?
  8. 關於CUDA共享記憶體的記憶庫衝突(bank conflict),下列說明何者正確?
  9. 在CUDA中,關於區塊與SM(串流多處理器)的關係,下列何者正確?
  10. 在CUDA中,想在核心函式途中,等待其他所有區塊的計算結束後再進入下一階段。下列何者是一般的方法?
  11. 下列何者是使用多個CUDA串流(stream)的主要目的?
  12. 關於CUDA的統一記憶體(unified memory),下列說明何者正確?
  13. 在CUDA中決定每個區塊的執行緒數量時,下列何者是正確的一般準則?
  14. CUDA的常數記憶體(constant memory)在何種存取時運作得特別快?
  15. 在CUDA中,CPU端的程式啟動核心函式之後,下列何者是一般正確的動作?

相關名詞

GPU 共享記憶體(GPU shared memory) 佔用率(GPU occupancy) 記憶體庫衝突(Bank conflict) 串流多處理器(Streaming multiprocessor) 統一記憶體(Unified memory) 常數記憶體(Constant memory) OpenCL FPGA(現場可程式化閘陣列) 平行歸約(Parallel reduction)

前往名詞解釋列表