opencl命令的分析信息?

时间:2014-05-20 06:01:49

标签: profiling opencl

我正在尝试使用性能分析信息来测量命令的执行时间。 这是我的代码

cl_event profEvent;
cl_ulong timeStart,timeStop;
ciErr=clEnqueueNDRangeKernel(cqCommandQueue,ckKernel,1,NULL,&szGlobalWorkSize,NULL,0,NULL,profEvent);
ciErr=clWaitForEvents(1,&profEvent);
clGetEventProfilingInfo(profEvent,CL_PROFILING_COMMAND_END,sizeof(timeStop),&timeStop,NULL);
clGetEventProfilingInfo(profEvent,CL_PROFILING_COMMAND_START,sizeof(timeStart),&timeStart,NULL);
printf("\nstart=%ld",timeStart);
printf("\nstop=%ld",timeStop);
printf("\nTime after profiling in SUB is \t\t%Ld",timeStart-timeStop);

根据网上找到的东西,这应该可以正常工作,但我得到以下输出

start=6492816
stop=0
Time after profiling in SUB is          6492816

error -58 in NDRANget

现在-58表示无效事件,我无法弄清楚如何让事件发挥作用? 请告诉我如何纠正这个问题。

由于 PIYUSH

1 个答案:

答案 0 :(得分:1)

事件必须作为指针传递,因此它可以在调用中返回事件对象。

应该是这样的:

ciErr=clEnqueueNDRangeKernel(cqCommandQueue,ckKernel,1,NULL,&szGlobalWorkSize,NULL,0,NULL,&profEvent);