Avoid deadlock becasue some work item couldn't reach barrier in loop

and unsynchronized.

Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
This commit is contained in:
Yan Wang 2015-01-19 15:50:16 +08:00
parent df57d038b8
commit f5b21e8141
2 changed files with 3 additions and 2 deletions

View File

@ -587,7 +587,7 @@ bool HaarEvaluator::read(const FileNode& node, Size _origWinSize)
localSize = lbufSize = Size(0, 0);
if (ocl::haveOpenCL())
{
if (ocl::Device::getDefault().isAMD())
if (ocl::Device::getDefault().isAMD() || ocl::Device::getDefault().isIntel())
{
localSize = Size(8, 8);
lbufSize = Size(origWinSize.width + localSize.width,

View File

@ -233,11 +233,12 @@ void runHaarClassifier(
for( stageIdx = SPLIT_STAGE; stageIdx < N_STAGES; stageIdx++ )
{
barrier(CLK_LOCAL_MEM_FENCE);
int nrects = lcount[0];
barrier(CLK_LOCAL_MEM_FENCE);
if( nrects == 0 )
break;
barrier(CLK_LOCAL_MEM_FENCE);
if( lidx == 0 )
lcount[0] = 0;