GPU程式設計

在CUDA中,CPU端的程式啟動核心函式之後,下列何者是一般正確的動作?

  1. ACPU必定會停住直到核心函式結束,什麼都不能做
  2. B核心函式是在CPU上執行的
  3. C由於啟動是非同步的,CPU不會等待核心函式結束就繼續進行下一個處理,因此在使用結果之前必須進行同步
查看答案與解析

正確答案:C. 由於啟動是非同步的,CPU不會等待核心函式結束就繼續進行下一個處理,因此在使用結果之前必須進行同步

核心函式的啟動只是在送往GPU的指令序列中加入處理,控制權會立即回到CPU端。因此CPU可以在GPU計算的同時,進行下一批資料的準備等工作。另一方面,在CPU讀取結果之前,必須藉由cudaDeviceSynchronize或結果的複製(若為同一串流,會等待前面處理完成)來確認核心函式已結束。計時的時候,如果不進行同步,也無法正確測量核心函式的時間。

  • A. 啟動的函式會立即返回。
  • B. 核心函式是在GPU上執行的。
  • C. 正確。在此期間CPU可以進行其他工作。
練習這個領域 前往領域頁面

GPU程式設計的其他題目

  1. 關於CPU與GPU設計理念的差異,下列何者正確?
  2. 下列何者最適合作為GPU能快速處理之工作的特徵?
  3. 下列何者是在GPU上執行時容易效率不佳的處理?
  4. 關於CUDA等GPU程式設計所稱的「核心函式(kernel)」,下列說明何者正確?
  5. 下列何者是CUDA執行緒階層的正確組合(由大到小)?

這個領域的比較