作者guanrulee (Dustin)
看板C_and_CPP
標題Re: [問題] CPU和GPU如何同時計算 (CUDA)
時間Sun Feb 19 20:21:10 2012
※ 引述《genghiskii (SaoAn)》之銘言:
: 請問各位如何技術上達到CPU和GPU同時運算,目前在做抓webcam
: 我現在只有辦法做到如下
: CPU抓一個frame-->GPU (CUDA)計算--> CPU抓一個frame--> loop...
: t0---------------------------------------------------->t100
: 可是我現在想對多張frame處理,希望可以做到
: CPU: 抓t0~t4 抓t5~t9 抓t10~t14 抓t15~t19
: 輸出t0~t4 輸出t5~t9
: GPU: 對t0~t4處理 對t5~t9處理 對t10~t14處理.......
: t0---------------------------------------------------->t100
: 因為如果sequential的做的話不但時間要花比較長,輸出的時候t4和t5間的延遲會比前
: 面的大很多,因為要等GPU計算完,而且抓的5個frame也會太靠近,所以不知道各位
: 知不知道技術上如何達到?
我知道用cudaMemcpyAsync傳資料的話, host還會繼續做運算,
那如果在t10, cpu要知道gpu算完第二個kernel了沒, 有什麼function可以使用嗎?
如果我用
kernel 2<<< >>>;
cudaEventRecord(stop_event, 0);
cpu code;
cudaEventSynchronize(stop_event);
function(必須等kernel 2做完才能做的code)
這個動作是kernel 2在算的時候, cpu部分還會繼續算cpu code,
然後算到cudaEventSynchronize的時候, 等到上面第二行的stop_event被寫入,
cpu才會繼續算下面的function對嗎?
我的理解有錯誤嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.64.10
→ blackwindy:multi-thread 02/20 00:28
推 sunneo:想知道有沒有做完可以用StreamQuery, 此外event用法ok 02/21 14:32