什麼時候調用cudaDeviceSynchronize
函數真的需要?何時調用cudaDeviceSynchronize?
就我從CUDA文檔中瞭解到,CUDA內核是異步的,所以在每次內核啓動後,我們應該調用cudaDeviceSynchronize
。但是,除了時間測量之前,我已經嘗試了使用和不使用cudaDeviceSynchronize
的相同代碼(訓練神經網絡)。我發現我得到了相同的結果,但加速度在7-12x之間(取決於矩陣大小)。
所以,問題是如果有任何理由使用cudaDeviceSynchronize
除了時間測量。
例如:
需要它從GPU回用
cudaMemcpy
主機的數據複製之前?如果我不矩陣乘法像
C = A * B D = C * F
要我把兩者之間cudaDeviceSynchronize
?
從我的實驗看來,我沒有。
cudaDeviceSynchronize
爲什麼這麼慢?
一個實例是,如果您在內核中有任何打印語句,則直到發生同步事件纔會打印緩衝區。 – 2016-07-08 15:35:45