From 635342ab732c3e1036d67969e1691022db86e2e7 Mon Sep 17 00:00:00 2001 From: wzw Date: Wed, 5 Jul 2017 21:24:09 +0800 Subject: [PATCH] ocl_calcHist1: Use proper local size for merge_histogram kernel merge_histogram kernel only need "BINS" theads to accumulate the histgrams, it is not efficient to directly use maxGroupSize as local size if maxGroupSize is far greater then BINS. --- modules/imgproc/src/histogram.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/imgproc/src/histogram.cpp b/modules/imgproc/src/histogram.cpp index cdd10869db..33f15c5250 100644 --- a/modules/imgproc/src/histogram.cpp +++ b/modules/imgproc/src/histogram.cpp @@ -1723,6 +1723,7 @@ static bool ocl_calcHist1(InputArray _src, OutputArray _hist, int ddepth = CV_32 if (!k1.run(1, &globalsize, &wgs, false)) return false; + wgs = std::min(ocl::Device::getDefault().maxWorkGroupSize(), BINS); char cvt[40]; ocl::Kernel k2("merge_histogram", ocl::imgproc::histogram_oclsrc, format("-D BINS=%d -D HISTS_COUNT=%d -D WGS=%d -D convertToHT=%s -D HT=%s",