看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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