Skip to content

Commit fd20529

Browse files
committed
Merge pull request opencv#9657 from alalek:ocl_global_size_adjustment
2 parents 92deccb + 2e68f89 commit fd20529

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

modules/core/src/ocl.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2269,7 +2269,7 @@ bool Kernel::run(int dims, size_t _globalsize[], size_t _localsize[],
22692269
return false;
22702270

22712271
cl_command_queue qq = getQueue(q);
2272-
size_t offset[CV_MAX_DIM] = {0}, globalsize[CV_MAX_DIM] = {1,1,1};
2272+
size_t globalsize[CV_MAX_DIM] = {1,1,1};
22732273
size_t total = 1;
22742274
CV_Assert(_globalsize != 0);
22752275
for (int i = 0; i < dims; i++)
@@ -2278,15 +2278,16 @@ bool Kernel::run(int dims, size_t _globalsize[], size_t _localsize[],
22782278
dims == 1 ? 64 : dims == 2 ? (i == 0 ? 256 : 8) : dims == 3 ? (8>>(int)(i>0)) : 1;
22792279
CV_Assert( val > 0 );
22802280
total *= _globalsize[i];
2281-
globalsize[i] = ((_globalsize[i] + val - 1)/val)*val;
2281+
if (_globalsize[i] == 1)
2282+
val = 1;
2283+
globalsize[i] = divUp(_globalsize[i], (unsigned int)val) * val;
22822284
}
2283-
if( total == 0 )
2284-
return true;
2285+
CV_Assert(total > 0);
22852286
if( p->haveTempDstUMats )
22862287
sync = true;
22872288
cl_event asyncEvent = 0;
22882289
cl_int retval = clEnqueueNDRangeKernel(qq, p->handle, (cl_uint)dims,
2289-
offset, globalsize, _localsize, 0, 0,
2290+
NULL, globalsize, _localsize, 0, 0,
22902291
sync ? 0 : &asyncEvent);
22912292
#if CV_OPENCL_SHOW_RUN_ERRORS
22922293
if (retval != CL_SUCCESS)

0 commit comments

Comments
 (0)