面部视频检测:CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST错误

时间:2014-07-07 19:46:05

标签: opencv memory-management opencl video-processing face-detection

我正在尝试在5分钟720P视频上运行人脸检测。我正在使用opencv API和opencl内核来完成我的工作。当我尝试运行程序时,它可以在初始数量很少的帧中运行。但是在一些帧之后,它给了我一个错误

OpenCV错误:openCLMemcpy2D中的Gpu API调用(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST),文件/opencv-2.4.6.1/modules/ocl/src/initialization.cpp,第466行

有时我处理200帧后会出现此错误,有时我会在2000帧后出现此错误。 任何人都可以建议我为什么我面临这个错误,什么可能是一个可能的解决方案?我搜索了互联网,但没有发现任何问题。

更新:我在有AP APU的台式电脑上执行了该程序。处理完一些框架后整机冻结。我还在每个内核之后应用clFinish以确保同步。即使,系统冻结了。所以,这不是同步问题。

1 个答案:

答案 0 :(得分:0)

此错误表示某个内核的等待列表中的OpenCL事件具有无效状态。发给Command Queue的内核无法等待它完成。通常这是由于缺乏正确的同步而发生的,因此处理帧的数量是运气的问题。

由于OpenCV是一个相当大的库,不太容易调试,在我看来,最简单的方法是收集运行时配置文件&查看命令队列中的任务是否按正确顺序排列。你可以使用profiler来实现,它通常由供应商提供OpenCL SDK(如Nvidia Visual Profiler或AMD CodeXL)。