参照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上的数字不同,提交需要比排队更多的时间!什么实现,这些读数来自实际执行分析! –