【记录一个问题】android下opencl中的event.getProfilingInfo()测速时间并不准确

使用了类似的代码来做android下opencl的时间测试:

cl::CommandQueue queue(context, devices[0], CL_QUEUE_PROFILING_ENABLE, &err);
cl::Event event;
//...
event.wait();
//
  cl_ulong startTime=0, endTime=0, queued=0, submit=0;
  event.getProfilingInfo(CL_PROFILING_COMMAND_START, &startTime);
  event.getProfilingInfo(CL_PROFILING_COMMAND_END, &endTime);
  event.getProfilingInfo(CL_PROFILING_COMMAND_QUEUED, &queued);
  event.getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, &submit);

  P("end-start:%fms", float(endTime - startTime)/1000000.0); 
  P("end-queue:%fms", float(endTime - queued)/1000000.0); 
  P("end-submit:%fms", float(endTime - submit)/1000000.0); 

打印出来:
end-start:119.574272ms
end-queue:323.316224ms
end-submit:323.314176ms

而整个函数的执行时间只有 79.248ms

这个profile统计出来的时间完全不准。暂未找到原因。

原文地址:https://www.cnblogs.com/ahfuzhang/p/11127530.html