GPU程式設計
CUDA的常數記憶體(constant memory)在何種存取時運作得特別快?
- A線程束的所有執行緒讀取同一個位址時(一次讀取的結果可廣播給全員)
- B線程束的執行緒各自寫入不同位址時
- C線程束的執行緒各自隨機讀取不同位址時
查看答案與解析
正確答案:A. 線程束的所有執行緒讀取同一個位址時(一次讀取的結果可廣播給全員)
常數記憶體是在核心函式執行期間不會被改寫的小型區域,並具有專用的快取。當線程束的全員讀取同一個位址時,一次讀取的結果可一併廣播給全員,因此能非常快速地讀取。適合用於全部執行緒都使用相同值的情況,例如影像濾波器的係數,或物理模擬的參數。若位址分散,讀取就會被拆開,反而變慢。
- A. 正確。適合像濾波器係數這種全員使用相同值的情況。
- B. 核心函式無法寫入常數記憶體。
- C. 讀取不同位址時,讀取會被依序拆開而變慢。