From 070e5ec042af3ca93cdd264fa3dde2ce58efc485 Mon Sep 17 00:00:00 2001 From: ElenaGvozdeva Date: Tue, 21 Oct 2014 13:13:15 +0300 Subject: [PATCH] Changed predictOptimalVectorWidth function, now it is possible to choose vector size. --- modules/core/include/opencv2/core/ocl.hpp | 6 ++++++ modules/core/src/ocl.cpp | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/core/include/opencv2/core/ocl.hpp b/modules/core/include/opencv2/core/ocl.hpp index 6caf3ba19a..a84b98d151 100644 --- a/modules/core/include/opencv2/core/ocl.hpp +++ b/modules/core/include/opencv2/core/ocl.hpp @@ -618,6 +618,12 @@ CV_EXPORTS int predictOptimalVectorWidth(InputArray src1, InputArray src2 = noAr InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), OclVectorStrategy strat = OCL_VECTOR_DEFAULT); +CV_EXPORTS int checkOptimalVectorWidth(int *vectorWidths, + InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), + InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), + InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), + OclVectorStrategy strat = OCL_VECTOR_DEFAULT); + // with OCL_VECTOR_MAX strategy CV_EXPORTS int predictOptimalVectorWidthMax(InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 1d0e20460b..c333b08c40 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -4513,7 +4513,6 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, OclVectorStrategy strat) { const ocl::Device & d = ocl::Device::getDefault(); - int ref_type = src1.type(); int vectorWidths[] = { d.preferredVectorWidthChar(), d.preferredVectorWidthChar(), d.preferredVectorWidthShort(), d.preferredVectorWidthShort(), @@ -4529,6 +4528,17 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, vectorWidths[CV_32S] = vectorWidths[CV_32F] = vectorWidths[CV_64F] = 1; } + return checkOptimalVectorWidth(vectorWidths, src1, src2, src3, src4, src5, src6, src7, src8, src9, strat); +} + +int checkOptimalVectorWidth(int *vectorWidths, + InputArray src1, InputArray src2, InputArray src3, + InputArray src4, InputArray src5, InputArray src6, + InputArray src7, InputArray src8, InputArray src9, + OclVectorStrategy strat) +{ + int ref_type = src1.type(); + std::vector offsets, steps, cols; std::vector dividers, kercns; PROCESS_SRC(src1);