From 3deea1c3ce723bc5deda250f2c698df676af94fd Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Tue, 12 Aug 2014 15:40:47 +0400 Subject: [PATCH] Added check required local memory size for non-inplace transpose kernel --- modules/core/src/matrix.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index af0fe22..392b6ad 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -3002,6 +3002,13 @@ static bool ocl_transpose( InputArray _src, OutputArray _dst ) CV_Assert(dst.cols == dst.rows); kernelName += "_inplace"; } + else + { + // check required local memory size + size_t required_local_memory = (size_t) TILE_DIM*(TILE_DIM+1)*CV_ELEM_SIZE(type); + if (required_local_memory > ocl::Device::getDefault().localMemSize()) + return false; + } ocl::Kernel k(kernelName.c_str(), ocl::core::transpose_oclsrc, format("-D T=%s -D T1=%s -D cn=%d -D TILE_DIM=%d -D BLOCK_ROWS=%d -D rowsPerWI=%d", -- 2.7.4