Fixed incorrect thread synchronizations
authorAlexander Karsakov <alexander.karsakov@itseez.com>
Wed, 19 Mar 2014 13:33:13 +0000 (17:33 +0400)
committerAlexander Karsakov <alexander.karsakov@itseez.com>
Thu, 20 Mar 2014 09:03:03 +0000 (13:03 +0400)
modules/objdetect/src/opencl/objdetect_hog.cl
modules/objdetect/test/opencl/test_hogdetector.cpp

index 5c71aa1..704dec4 100644 (file)
@@ -141,9 +141,8 @@ __kernel void compute_hists_lut_kernel(
             final_hist[(cell_x * 2 + cell_y) * cnbins + bin_id] =
                 hist_[0] + hist_[1] + hist_[2];
     }
-#ifdef CPU
+
     barrier(CLK_LOCAL_MEM_FENCE);
-#endif
 
     int tid = (cell_y * CELLS_PER_BLOCK_Y + cell_x) * 12 + cell_thread_x;
     if ((tid < cblock_hist_size) && (gid < blocks_total))
index 8568352..b3ef6b4 100644 (file)
@@ -110,7 +110,7 @@ OCL_TEST_P(HOG, Detect)
     OCL_OFF(hog.detectMultiScale(img, cpu_found, 0, Size(8, 8), Size(0, 0), 1.05, 6));
     OCL_ON(hog.detectMultiScale(uimg, gpu_found, 0, Size(8, 8), Size(0, 0), 1.05, 6));
 
-    EXPECT_LT(checkRectSimilarity(img.size(), cpu_found, gpu_found), 1.0);
+    EXPECT_LT(checkRectSimilarity(img.size(), cpu_found, gpu_found), 0.05);
 }
 
 INSTANTIATE_TEST_CASE_P(OCL_ObjDetect, HOG, testing::Combine(