參照clGetEventProfilingInfo文檔,cl_event
源於clEnqueueNDRangeKernel可以是:OpenCL的事件歧義
- CL_PROFILING_COMMAND_QUEUED
當由事件標識的命令由 排隊在命令隊列主人。
- CL_PROFILING_COMMAND_SUBMIT
- CL_PROFILING_COMMAND_START
- CL_PROFILING_COMMAND_END
- 排隊= COMMAND_SUBMIT - COMMAND_QUEUED
- 提交= COMMAND_START - COMMAND_SUBMIT
- 執行= COMMAND_END - COMMAND_START
當已經排隊由事件標識的命令是 由主機提交與commandqueue相關聯的設備。
當由事件標識開始執行設備上的命令。
當由事件標識的命令已經完成執行 設備上。
假設可視化整仁分析:
COMMAND_QUEUED -> COMMAND_SUBMIT -> COMMAND_START -> COMMAND_END
&相應的時間表:
Queueing -> Submitting -> Executing
其中:
問題:
是我以前的公式真的嗎?如果是這樣,什麼的排隊和提交之間的真正區別? 換句話說,如果我想將整個過程劃分爲COMMUNICATION(卸載)時間和COMPUTATION(執行)時間,那麼什麼是將是它們的等式?
當在CPU上運行時,QUEUED = 0但是SUBMIT不是!爲什麼? –
不知道爲什麼。聽起來像是實施中的一個錯誤。 – Dithermaster
我懷疑因爲gpu上的數字不同,提交需要比排隊更多的時間!什麼實現,這些讀數來自實際執行分析! –