GPU程式設計
在CUDA中,CPU端的程式啟動核心函式之後,下列何者是一般正確的動作?
- ACPU必定會停住直到核心函式結束,什麼都不能做
- B核心函式是在CPU上執行的
- C由於啟動是非同步的,CPU不會等待核心函式結束就繼續進行下一個處理,因此在使用結果之前必須進行同步
查看答案與解析
正確答案:C. 由於啟動是非同步的,CPU不會等待核心函式結束就繼續進行下一個處理,因此在使用結果之前必須進行同步
核心函式的啟動只是在送往GPU的指令序列中加入處理,控制權會立即回到CPU端。因此CPU可以在GPU計算的同時,進行下一批資料的準備等工作。另一方面,在CPU讀取結果之前,必須藉由cudaDeviceSynchronize或結果的複製(若為同一串流,會等待前面處理完成)來確認核心函式已結束。計時的時候,如果不進行同步,也無法正確測量核心函式的時間。
- A. 啟動的函式會立即返回。
- B. 核心函式是在GPU上執行的。
- C. 正確。在此期間CPU可以進行其他工作。