Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add REDUCE_SUM2 #13879

Merged
merged 18 commits into from
Apr 28, 2023
Merged

add REDUCE_SUM2 #13879

merged 18 commits into from
Apr 28, 2023

Conversation

chacha21
Copy link
Contributor

proposal to add REDUCE_SUM2 to cv::reduce, an operation that sums up the square of elements

proposal to add REDUCE_SUM2 to cv::reduce, an operation that sums up the square of elements
put AutoBuffer outside the main reduceC_ loop
Added SUM_REDUCE2 to tests
fixed test of REDUCE_SUM2
@chacha21
Copy link
Contributor Author

Can anyone help me understand the build failure related to perf_test ? I do not understand how I am supposed to fix that.

else if( op == CV_REDUCE_SUM2 )
{
if(sdepth == CV_8U && ddepth == CV_32S)
func = GET_OPTIMIZED(reduceSum2R8u32s);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove GET_OPTIMIZED().
There is no corresponding function anyway.

Also changes in "ReduceFunc" broke all corresponding calls (changes can be reverted, see corresponding comment).

@@ -605,7 +605,7 @@ namespace cv
{

template<typename T, typename ST, class Op> static void
reduceR_( const Mat& srcmat, Mat& dstmat )
reduceR_( const Mat& srcmat, Mat& dstmat, bool applyOpOnFirstRow = false)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation changes doesn't look good.
What if you want to calculate product instead of sum? "0" value doesnt' work anymore

IMHO, It is better to define separate "Init" functor:

  • NoOp for old cases
  • new SqValue
-buf[i] = src[i];
+buf[i] = initOp(src[i]);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, I am on it

@@ -1490,6 +1490,7 @@ CVAPI(void) cvNormalize( const CvArr* src, CvArr* dst,
#define CV_REDUCE_AVG 1
#define CV_REDUCE_MAX 2
#define CV_REDUCE_MIN 3
#define CV_REDUCE_SUM2 4
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't touch ".c" files anymore (deprecated).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, but in that case I will have to change all references to CV_REDUCE_* in cpp code, in favor of cv::REDUCE_*

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, please use enum values: REDUCE_ (cv:: prefix is not needed)

+prefer cv::REDUCE_* instead of CV_REDUCE throughout the code, so that core_c.h remains untouched and doesn't know about CV_REDUCE_SUM2
+get rid of GET_OPTIMIZED() in reduceR  and reduceC
+add an additional Operator template functor to reduceR and reduceC that is responsible for the very first value (by default just copies the value, and will square it for REDUCE_SUM2)
@chacha21
Copy link
Contributor Author

chacha21 commented Feb 22, 2019

I am sorry, I have read the doc, but I stil don't know how to understand the perf_test failure :
https://pullrequest.opencv.org/buildbot/builders/precommit_linux64/builds/20244/steps/perf_core/logs/tests%20summary

@alalek
Copy link
Member

alalek commented Feb 22, 2019

Failed
No regression data

You can check it locally by passing "--perf_verify_sanity" argument.

https://github.com/opencv/opencv/wiki/HowToUsePerfTests#how-to-update-perf-data

Need to update test data and prepare PR into opencv_extra (with the same branch name as this PR: "REDUCE_SUM2")

@chacha21
Copy link
Contributor Author

Once the "perf_test" problem will be resolved, I plan to add REDUCE_SUMABS to compute the absolute sum of elements.
After that, I will consider parallelizing the work on each line/column, since it is not already the case.
Then, cv::reduce() will be very helpful to batch-compute the norm of different vectors stored either in a 2D matrix, or sequentially in a 1D buffer that could be reshaped() to match reduce() input.

@chacha21
Copy link
Contributor Author

I have followed the instructions of https://github.com/opencv/opencv/wiki/HowToUsePerfTests#how-to-update-perf-data, but I get a totally different xml that the original core.xml

Here is the beginning of my output :

<?xml version="1.0" encoding="UTF-8"?> <testsuites tests="3949" failures="12" disabled="0" errors="0" timestamp="2019-02-25T12:19:41" time="118.031" cv_module_name="core" cv_implementation="plain" cv_num_threads="-1" cv_version="4.0.1-dev" cv_version_build="4.0.1-dev" cv_vcs_version="4.0.1-252-g1ed46da" cv_build_type="" cv_build_type_build="Release" cv_compiler="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe (ver 19.16.27027.1)" cv_parallel_framework="ms-concurrency" cv_cpu_features="SSE SSE2 SSE3 *SSE4.1 *SSE4.2 *FP16 *AVX *AVX2" cv_ipp_version="ippIP AVX2 (l9) 2019.0.0 Gold (-) Jul 26 2018" cv_ocl_platform_0_device_0="(Platform=NVIDIA CUDA)(Type=dGPU)(Name=GeForce GTX 750)(Version=OpenCL 1.2 CUDA)" cv_ocl_current_deviceType="dGPU" cv_ocl_current_deviceName="GeForce GTX 750" cv_ocl_current_deviceVersion="OpenCL 1.2 CUDA" cv_ocl_current_driverVersion="418.91" cv_ocl_current_addressBits="64" cv_ocl_current_maxComputeUnits="4" cv_ocl_current_maxWorkGroupSize="1024" cv_ocl_current_localMemSize="49152" cv_ocl_current_maxMemAllocSize="536870912" cv_ocl_current_haveDoubleSupport="1" cv_ocl_current_hostUnifiedMemory="0" cv_ocl_current_extensions="cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer" cv_ocl_current_AmdBlas="0" cv_ocl_current_AmdFft="0" cv_ocl_current_preferredVectorWidthChar="1" cv_ocl_current_preferredVectorWidthShort="1" cv_ocl_current_preferredVectorWidthInt="1" cv_ocl_current_preferredVectorWidthLong="1" cv_ocl_current_preferredVectorWidthFloat="1" cv_ocl_current_preferredVectorWidthDouble="1" name="AllTests"> <testsuite name="OCL_BufferPoolFixture_BufferPool_UMatCreation100" tests="2" failures="0" disabled="0" errors="0" time="0.003"> <testcase name="BufferPool_UMatCreation100/0" value_param="false" status="run" time="0" classname="OCL_BufferPoolFixture_BufferPool_UMatCreation100"> <properties> <property name="bytesIn" value="0"/> <property name="bytesOut" value="0"/> <property name="term" value="0"/> <property name="samples" value="1"/> <property name="outliers" value="0"/> <property name="frequency" value="3513613"/> <property name="min" value="1239"/> <property name="median" value="1239"/> <property name="gmean" value="1239"/> <property name="gstddev" value="0.000000"/> <property name="mean" value="1239"/> <property name="stddev" value="0"/> </properties> </testcase> <testcase name="BufferPool_UMatCreation100/1" value_param="true" status="run" time="0.001" classname="OCL_BufferPoolFixture_BufferPool_UMatCreation100"> <properties> <property name="bytesIn" value="0"/> <property name="bytesOut" value="0"/> <property name="term" value="0"/> <property name="samples" value="1"/> <property name="outliers" value="0"/> <property name="frequency" value="3513613"/> <property name="min" value="443"/> <property name="median" value="443"/> <property name="gmean" value="443"/> <property name="gstddev" value="0.000000"/> <property name="mean" value="443"/> <property name="stddev" value="0"/>

@alalek
Copy link
Member

alalek commented Feb 25, 2019

This is completely different XML (Google Test output).

You need to specify OPENCV_TEST_DATA_PATH and --perf_write_sanity

@chacha21
Copy link
Contributor Author

chacha21 commented Feb 25, 2019

I did not forget, neither OPENCV_TEST_DATA_PATH, nor --perf_write_sanity, and I keep getting the same unexpected XML output.
I wonder if it can come from a wrong package of python, or something related to Cygwin.
I keep trying, though.

@alalek
Copy link
Member

alalek commented Feb 25, 2019

unexpected XML output

--perf_write_sanity writes into file under OPENCV_TEST_DATA_PATH (into opencv_extra/testdata).
--gtest_output=xml is completely different output - not needed here.

@chacha21
Copy link
Contributor Author

I did not use --gtest_output at all, I just ran the python scripts as mentioned in HowToUsePerfTests. The xml I get in the generated core-[date].xml file is the one state above, very different from the expected <opencv_storage>...</opencv_storage>

There must be something I misunderstood. Here is a recap :
-the current PR is blocked because the perf tests are not up-to-date with the added REDUCE_SUM2 feature
-"updating the perf tests" is needed
-I assume that I have to submit a modified core.xml of opencv_extra/testdata
-so far, I wasn't able to generate a new core.xml file with a comparable structure. Whatever the way I run opencv_test_core or opencv_perf_core, using the python scripts mentioned in HowToUsePerfTests, or by direct call, I always get the same very different XML structure (quoted in a previous message)
-so, how is core.xml supposed to be updated ?

@chacha21
Copy link
Contributor Author

chacha21 commented May 4, 2019

I am sorry, but I am still unable to provide the perf test, I still don't understand how to do that.

@chacha21 chacha21 mentioned this pull request Oct 21, 2019
2 tasks
@chacha21
Copy link
Contributor Author

I dont understand the buildbot error " No regression data for dst argument"

@alalek
Copy link
Member

alalek commented Dec 18, 2019

Performance tests has some accuracy checks:

@asmorkalov asmorkalov added category: core Hackathon https://opencv.org/opencv-hackathon-starts-next-week/ and removed pr: Discussion Required labels Jan 29, 2020
@asmorkalov
Copy link
Contributor

asmorkalov commented Jan 31, 2020

Remaining item for the PR:

  • disable sanity checks for new performance test
  • squash commits.

@asenyaev
Copy link
Contributor

asenyaev commented Apr 7, 2021

jenkins cn please retry a build

@mshabunin
Copy link
Contributor

@asmorkalov , I've updated the PR:

  • removed sanity check in all affected perf tests
  • removed old commented code
  • fixed minor warnings

Below are my performance results for 1, 4 and 8 threads. There is a slowdown when reduce is performed along 0th dimension for smaller image sizes when number of threads is more than 1.

Name of Test log1 log4 log8 log4 vs log1 (x-factor) log8 vs log1 (x-factor)
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 0, REDUCE_AVG) 0.033 0.074 0.048 0.44 0.69
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 0, REDUCE_SUM2) 0.033 0.058 0.056 0.57 0.59
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 0, REDUCE_SUM) 0.032 0.072 0.030 0.45 1.06
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 1, REDUCE_AVG) 0.592 0.158 0.088 3.74 6.73
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 1, REDUCE_SUM2) 0.595 0.160 0.090 3.73 6.59
Reduce::OCL_ReduceAccFixture::(640x480, (32FC1, 32FC1), 1, REDUCE_SUM) 0.593 0.158 0.088 3.74 6.76
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 0, REDUCE_AVG) 0.314 0.177 0.129 1.78 2.43
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 0, REDUCE_SUM2) 0.319 0.182 0.123 1.76 2.60
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 0, REDUCE_SUM) 0.319 0.171 0.128 1.86 2.49
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 1, REDUCE_AVG) 0.821 0.193 0.127 4.26 6.47
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 1, REDUCE_SUM2) 0.706 0.189 0.131 3.74 5.38
Reduce::OCL_ReduceAccFixture::(640x480, (8UC4, 32SC4), 1, REDUCE_SUM) 0.837 0.193 0.127 4.34 6.58
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 0, REDUCE_AVG) 0.096 0.192 0.086 0.50 1.12
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 0, REDUCE_SUM2) 0.100 0.194 0.120 0.52 0.83
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 0, REDUCE_SUM) 0.095 0.193 0.105 0.49 0.90
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 1, REDUCE_AVG) 1.810 0.466 0.263 3.88 6.89
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 1, REDUCE_SUM2) 1.806 0.471 0.280 3.84 6.45
Reduce::OCL_ReduceAccFixture::(1280x720, (32FC1, 32FC1), 1, REDUCE_SUM) 1.819 0.470 0.262 3.87 6.95
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 0, REDUCE_AVG) 0.945 0.400 0.340 2.37 2.78
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 0, REDUCE_SUM2) 0.959 0.399 0.340 2.40 2.82
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 0, REDUCE_SUM) 0.956 0.405 0.338 2.36 2.83
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 1, REDUCE_AVG) 2.470 0.585 0.373 4.22 6.63
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 1, REDUCE_SUM2) 2.131 0.558 0.386 3.82 5.52
Reduce::OCL_ReduceAccFixture::(1280x720, (8UC4, 32SC4), 1, REDUCE_SUM) 2.317 0.581 0.372 3.98 6.23
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 0, REDUCE_AVG) 0.261 0.291 0.324 0.90 0.81
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 0, REDUCE_SUM2) 0.273 0.337 0.329 0.81 0.83
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 0, REDUCE_SUM) 0.257 0.292 0.424 0.88 0.61
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 1, REDUCE_AVG) 4.163 1.075 0.577 3.87 7.22
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 1, REDUCE_SUM2) 4.154 1.073 0.595 3.87 6.98
Reduce::OCL_ReduceAccFixture::(1920x1080, (32FC1, 32FC1), 1, REDUCE_SUM) 4.149 1.077 0.580 3.85 7.15
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 0, REDUCE_AVG) 2.209 1.058 0.784 2.09 2.82
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 0, REDUCE_SUM2) 2.206 1.059 0.802 2.08 2.75
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 0, REDUCE_SUM) 2.224 1.048 0.785 2.12 2.84
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 1, REDUCE_AVG) 5.225 1.353 0.842 3.86 6.20
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 1, REDUCE_SUM2) 4.778 1.265 0.862 3.78 5.54
Reduce::OCL_ReduceAccFixture::(1920x1080, (8UC4, 32SC4), 1, REDUCE_SUM) 5.255 1.340 0.840 3.92 6.25
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 0, REDUCE_AVG) 1.345 1.616 1.575 0.83 0.85
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 0, REDUCE_SUM2) 1.363 1.587 1.549 0.86 0.88
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 0, REDUCE_SUM) 1.336 1.573 1.524 0.85 0.88
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 1, REDUCE_AVG) 16.432 4.293 2.316 3.83 7.09
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 1, REDUCE_SUM2) 16.464 4.319 2.513 3.81 6.55
Reduce::OCL_ReduceAccFixture::(3840x2160, (32FC1, 32FC1), 1, REDUCE_SUM) 16.413 4.310 2.315 3.81 7.09
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 0, REDUCE_AVG) 9.078 3.841 3.168 2.36 2.87
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 0, REDUCE_SUM2) 9.078 3.926 3.345 2.31 2.71
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 0, REDUCE_SUM) 9.002 3.820 3.176 2.36 2.83
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 1, REDUCE_AVG) 22.126 5.467 3.408 4.05 6.49
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 1, REDUCE_SUM2) 19.100 5.030 3.457 3.80 5.52
Reduce::OCL_ReduceAccFixture::(3840x2160, (8UC4, 32SC4), 1, REDUCE_SUM) 21.850 5.526 3.420 3.95 6.39
Reduce::OCL_ReduceMinMaxFixture::(640x480, (8UC1, 8UC1), 0, CV_REDUCE_MAX) 0.136 0.138 0.121 0.99 1.13
Reduce::OCL_ReduceMinMaxFixture::(640x480, (8UC1, 8UC1), 0, CV_REDUCE_MIN) 0.136 0.138 0.122 0.99 1.12
Reduce::OCL_ReduceMinMaxFixture::(640x480, (8UC1, 8UC1), 1, CV_REDUCE_MAX) 0.607 0.158 0.086 3.84 7.09
Reduce::OCL_ReduceMinMaxFixture::(640x480, (8UC1, 8UC1), 1, CV_REDUCE_MIN) 0.596 0.157 0.086 3.81 6.97
Reduce::OCL_ReduceMinMaxFixture::(640x480, (32FC4, 32FC4), 0, CV_REDUCE_MAX) 0.138 0.160 0.119 0.86 1.16
Reduce::OCL_ReduceMinMaxFixture::(640x480, (32FC4, 32FC4), 0, CV_REDUCE_MIN) 0.143 0.147 0.122 0.98 1.17
Reduce::OCL_ReduceMinMaxFixture::(640x480, (32FC4, 32FC4), 1, CV_REDUCE_MAX) 0.600 0.157 0.091 3.84 6.58
Reduce::OCL_ReduceMinMaxFixture::(640x480, (32FC4, 32FC4), 1, CV_REDUCE_MIN) 0.608 0.156 0.091 3.90 6.66
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (8UC1, 8UC1), 0, CV_REDUCE_MAX) 0.404 0.322 0.366 1.26 1.11
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (8UC1, 8UC1), 0, CV_REDUCE_MIN) 0.407 0.403 0.351 1.01 1.16
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (8UC1, 8UC1), 1, CV_REDUCE_MAX) 1.838 0.471 0.250 3.90 7.36
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (8UC1, 8UC1), 1, CV_REDUCE_MIN) 1.816 0.466 0.250 3.90 7.28
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (32FC4, 32FC4), 0, CV_REDUCE_MAX) 0.573 0.480 0.437 1.19 1.31
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (32FC4, 32FC4), 0, CV_REDUCE_MIN) 0.591 0.499 0.414 1.18 1.43
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (32FC4, 32FC4), 1, CV_REDUCE_MAX) 1.878 0.494 0.282 3.80 6.65
Reduce::OCL_ReduceMinMaxFixture::(1280x720, (32FC4, 32FC4), 1, CV_REDUCE_MIN) 1.873 0.493 0.282 3.80 6.63
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (8UC1, 8UC1), 0, CV_REDUCE_MAX) 0.929 1.078 0.752 0.86 1.24
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (8UC1, 8UC1), 0, CV_REDUCE_MIN) 0.924 0.812 0.531 1.14 1.74
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (8UC1, 8UC1), 1, CV_REDUCE_MAX) 4.097 1.061 0.557 3.86 7.36
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (8UC1, 8UC1), 1, CV_REDUCE_MIN) 4.087 1.062 0.556 3.85 7.35
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (32FC4, 32FC4), 0, CV_REDUCE_MAX) 1.404 1.248 1.053 1.12 1.33
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (32FC4, 32FC4), 0, CV_REDUCE_MIN) 1.423 1.266 1.084 1.12 1.31
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (32FC4, 32FC4), 1, CV_REDUCE_MAX) 4.256 1.108 0.704 3.84 6.05
Reduce::OCL_ReduceMinMaxFixture::(1920x1080, (32FC4, 32FC4), 1, CV_REDUCE_MIN) 4.246 1.129 0.700 3.76 6.06
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (8UC1, 8UC1), 0, CV_REDUCE_MAX) 3.766 2.697 2.827 1.40 1.33
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (8UC1, 8UC1), 0, CV_REDUCE_MIN) 3.753 2.486 2.555 1.51 1.47
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (8UC1, 8UC1), 1, CV_REDUCE_MAX) 16.274 4.242 2.227 3.84 7.31
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (8UC1, 8UC1), 1, CV_REDUCE_MIN) 16.265 4.226 2.219 3.85 7.33
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (32FC4, 32FC4), 0, CV_REDUCE_MAX) 5.778 5.064 4.652 1.14 1.24
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (32FC4, 32FC4), 0, CV_REDUCE_MIN) 5.713 5.059 4.759 1.13 1.20
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (32FC4, 32FC4), 1, CV_REDUCE_MAX) 16.885 4.571 3.123 3.69 5.41
Reduce::OCL_ReduceMinMaxFixture::(3840x2160, (32FC4, 32FC4), 1, CV_REDUCE_MIN) 17.002 4.559 3.117 3.73 5.46

Copy link
Contributor

@asmorkalov asmorkalov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@asmorkalov asmorkalov merged commit 6dd8a9b into opencv:4.x Apr 28, 2023
@mshabunin
Copy link
Contributor

@asmorkalov , thank you!
@chacha21 , thank you for contribution!

@asmorkalov asmorkalov mentioned this pull request May 31, 2023
thewoz pushed a commit to thewoz/opencv that referenced this pull request Jan 4, 2024
add REDUCE_SUM2 opencv#13879 

proposal to add REDUCE_SUM2 to cv::reduce, an operation that sums up the square of elements
thewoz pushed a commit to thewoz/opencv that referenced this pull request May 29, 2024
add REDUCE_SUM2 opencv#13879 

proposal to add REDUCE_SUM2 to cv::reduce, an operation that sums up the square of elements
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants