GPU程式設計

在CUDA中,關於區塊與SM(串流多處理器)的關係,下列何者正確?

  1. A一個區塊的執行緒會分散到所有SM上執行
  2. BSM的數量與區塊的數量必須相同
  3. C每個區塊會被分配到一個SM,並在該處執行到最後,一個SM上可能同時載入多個區塊
查看答案與解析

正確答案:C. 每個區塊會被分配到一個SM,並在該處執行到最後,一個SM上可能同時載入多個區塊

GPU具有許多SM,會將核心函式的區塊依序分配給空閒的SM。一個區塊在一個SM上執行,因此區塊中的執行緒可使用該SM的共享記憶體,也能進行同步。若讓區塊數量遠多於SM的數量,即使GPU的規模不同,所有SM也都能分到工作,已完成的SM則會被分配下一個區塊。

  • A. 區塊是在一個SM之內執行。
  • B. 區塊的數量可以遠多於SM的數量。
  • C. 正確。因此在區塊內可以使用共享記憶體。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 在CUDA中,想在核心函式途中,等待其他所有區塊的計算結束後再進入下一階段。下列何者是一般的方法?
  2. 以GPU製作像素值的直方圖時,若所有執行緒都用atomicAdd直接對全域記憶體中的256個分格(bin)進行加總,有時會很慢。下列何者是正確的改善方法?
  3. 以GPU求取大量數值的總和時,使用樹狀歸約(reduction,重複將相鄰的值相加而使數量減半)的理由,下列何者正確?
  4. 以樹狀歸約加總1024個值時,所需的階段數為多少?
  5. 在使用單一GPU的程式中,關於CPU端記憶體與GPU端記憶體,下列何者通常是正確的?

這個領域的比較