Skip to content

Use Carotene implementation of TEGRA_GaussianBlurBinomial 3x3 and 5x5 on ARM#25799

Merged
asmorkalov merged 1 commit intoopencv:4.xfrom
asmorkalov:as/HAL_GaussianBlurBinomial_Carotene
Jul 3, 2024
Merged

Use Carotene implementation of TEGRA_GaussianBlurBinomial 3x3 and 5x5 on ARM#25799
asmorkalov merged 1 commit intoopencv:4.xfrom
asmorkalov:as/HAL_GaussianBlurBinomial_Carotene

Conversation

@asmorkalov
Copy link
Copy Markdown
Contributor

@asmorkalov asmorkalov commented Jun 21, 2024

Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

@asmorkalov asmorkalov added optimization platform: arm ARM boards related issues: RPi, NVIDIA TK/TX, etc labels Jun 21, 2024
@asmorkalov asmorkalov added this to the 4.11.0 milestone Jun 21, 2024
@asmorkalov
Copy link
Copy Markdown
Contributor Author

asmorkalov commented Jun 21, 2024

Jetson TK1 (ARM v7+NEON):

Test 4.x patch speedup
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_CONSTANT) 0.027 0.012 2.19
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_REPLICATE) 0.028 0.012 2.37
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_CONSTANT) 0.043 0.042 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_REPLICATE) 0.040 0.040 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_CONSTANT) 0.060 0.061 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_REPLICATE) 0.060 0.060 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_CONSTANT) 0.049 0.050 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_REPLICATE) 0.047 0.048 0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_CONSTANT) 0.068 0.068 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_REPLICATE) 0.070 0.070 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_CONSTANT) 0.166 0.061 2.74
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_REPLICATE) 0.169 0.061 2.78
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_CONSTANT) 0.303 0.294 1.03
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_REPLICATE) 0.293 0.294 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_CONSTANT) 0.326 0.325 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_REPLICATE) 0.326 0.324 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_CONSTANT) 0.253 0.257 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_REPLICATE) 0.256 0.254 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_CONSTANT) 0.551 0.547 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_REPLICATE) 0.560 0.563 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_CONSTANT) 0.577 0.218 2.64
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_REPLICATE) 0.588 0.210 2.79
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_CONSTANT) 1.135 1.123 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_REPLICATE) 1.146 1.123 1.02
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_CONSTANT) 1.208 1.210 1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_REPLICATE) 1.227 1.195 1.03
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_CONSTANT) 0.947 0.935 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_REPLICATE) 0.930 0.940 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_CONSTANT) 2.228 2.331 0.96
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_REPLICATE) 2.270 2.311 0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_CONSTANT) 1.679 0.620 2.71
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_REPLICATE) 1.693 0.645 2.63
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_CONSTANT) 3.414 3.469 0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_REPLICATE) 3.440 3.406 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_CONSTANT) 4.013 4.044 0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_REPLICATE) 4.002 3.972 1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_CONSTANT) 3.302 3.384 0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_REPLICATE) 3.295 3.399 0.97
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_CONSTANT) 7.502 7.025 1.07
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_REPLICATE) 7.804 7.174 1.09
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_CONSTANT) 0.043 0.025 1.74
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT101) 0.046 0.024 1.89
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT) 0.046 0.024 1.89
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REPLICATE) 0.046 0.024 1.89
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_CONSTANT) 0.105 0.033 3.15
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT101) 0.100 0.033 2.98
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT) 0.099 0.033 2.98
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REPLICATE) 0.099 0.033 2.98
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_CONSTANT) 0.073 0.073 0.99
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT101) 0.071 0.072 0.99
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT) 0.071 0.072 0.99
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REPLICATE) 0.071 0.073 0.98
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_CONSTANT) 0.063 0.064 0.99
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT101) 0.062 0.063 0.99
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT) 0.062 0.063 1.00
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REPLICATE) 0.062 0.062 1.00
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_CONSTANT) 0.115 0.067 1.72
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT101) 0.119 0.067 1.77
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT) 0.118 0.068 1.73
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REPLICATE) 0.118 0.069 1.72
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_CONSTANT) 0.265 0.137 1.94
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT101) 0.284 0.138 2.05
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT) 0.284 0.138 2.06
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REPLICATE) 0.284 0.138 2.06
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_CONSTANT) 0.868 0.236 3.68
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT101) 0.861 0.237 3.63
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT) 0.854 0.237 3.60
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REPLICATE) 0.851 0.238 3.57
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_CONSTANT) 0.458 0.458 1.00
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT101) 0.465 0.459 1.01
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT) 0.459 0.453 1.01
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REPLICATE) 0.460 0.455 1.01
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_CONSTANT) 0.405 0.395 1.03
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT101) 0.399 0.386 1.03
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT) 0.401 0.386 1.04
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REPLICATE) 0.401 0.389 1.03
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_CONSTANT) 0.955 0.509 1.87
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT101) 0.987 0.514 1.92
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT) 0.975 0.514 1.90
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REPLICATE) 0.986 0.529 1.86
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_CONSTANT) 0.961 0.508 1.89
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT101) 1.009 0.516 1.95
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT) 1.008 0.516 1.95
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REPLICATE) 1.004 0.501 2.00
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_CONSTANT) 3.417 0.918 3.72
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT101) 3.409 0.906 3.76
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT) 3.366 0.914 3.68
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REPLICATE) 3.348 0.911 3.67
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_CONSTANT) 2.046 1.770 1.16
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT101) 2.058 1.782 1.15
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT) 1.998 1.784 1.12
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REPLICATE) 1.938 1.809 1.07
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_CONSTANT) 1.747 1.739 1.00
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT101) 1.745 1.724 1.01
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT) 1.768 1.740 1.02
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REPLICATE) 1.741 1.755 0.99
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_CONSTANT) 3.877 2.083 1.86
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT101) 3.896 2.073 1.88
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT) 3.969 2.074 1.91
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REPLICATE) 3.995 2.021 1.98
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_CONSTANT) 2.841 1.468 1.93
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT101) 2.908 1.472 1.98
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT) 2.861 1.481 1.93
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REPLICATE) 2.850 1.514 1.88
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_CONSTANT) 10.207 2.712 3.76
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT101) 10.147 2.704 3.75
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT) 10.086 2.710 3.72
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REPLICATE) 10.177 2.737 3.72
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_CONSTANT) 5.837 5.805 1.01
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT101) 5.818 5.823 1.00
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT) 5.862 5.855 1.00
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REPLICATE) 5.813 5.838 1.00
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_CONSTANT) 5.963 5.932 1.01
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT101) 6.004 6.001 1.00
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT) 5.969 5.893 1.01
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REPLICATE) 5.947 5.909 1.01
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_CONSTANT) 13.181 6.108 2.16
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT101) 13.373 6.098 2.19
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT) 12.863 6.093 2.11
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REPLICATE) 13.154 6.256 2.10

@asmorkalov asmorkalov changed the title WIP: Use Carotene implementation of TEGRA_GaussianBlurBinomial 3x3 and 5x5 on ARM Use Carotene implementation of TEGRA_GaussianBlurBinomial 3x3 and 5x5 on ARM Jun 21, 2024
Copy link
Copy Markdown
Member

@fengyuentau fengyuentau left a comment

Choose a reason for hiding this comment

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

Is Carateneonly for ARMv7?

@asmorkalov
Copy link
Copy Markdown
Contributor Author

No, it's for aarch64 too. I'm working with Jetson Orin right now to get perf numbers. Mac Mx results are welcome too.

Copy link
Copy Markdown
Member

@fengyuentau fengyuentau left a comment

Choose a reason for hiding this comment

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

I got many warnings during compilation (Apple clang 15.0.0):

In file included from /Workspace/fytao/opencv/modules/imgproc/src/thresh.cpp:43:
In file included from /Workspace/fytao/opencv/modules/imgproc/src/precomp.hpp:56:
In file included from /Workspace/fytao/opencv/modules/imgproc/src/hal_replacement.hpp:1114:
In file included from /Workspace/fytao/opencv/build/custom_hal.hpp:5:
/Workspace/fytao/opencv/build/carotene/tegra_hal.hpp:1926:9: warning: 'cv_hal_gaussianBlurBinomial' macro redefined [-Wmacro-redefined]
#define cv_hal_gaussianBlurBinomial TEGRA_GaussianBlurBinomial
        ^
/Workspace/fytao/opencv/modules/imgproc/src/hal_replacement.hpp:974:9: note: previous definition is here
#define cv_hal_gaussianBlurBinomial hal_ni_gaussianBlurBinomial
        ^
In file included from /Workspace/fytao/opencv/modules/imgproc/src/utils.cpp:42:
In file included from /Workspace/fytao/opencv/modules/imgproc/src/precomp.hpp:56:
In file included from /Workspace/fytao/opencv/modules/imgproc/src/hal_replacement.hpp:1114:
In file included from /Workspace/fytao/opencv/build/custom_hal.hpp:5:
/Workspace/fytao/opencv/build/carotene/tegra_hal.hpp:1926:9: warning: 'cv_hal_gaussianBlurBinomial' macro redefined [-Wmacro-redefined]
#define cv_hal_gaussianBlurBinomial TEGRA_GaussianBlurBinomial
        ^
/Workspace/fytao/opencv/modules/imgproc/src/hal_replacement.hpp:974:9: note: previous definition is here
#define cv_hal_gaussianBlurBinomial hal_ni_gaussianBlurBinomial

Copy link
Copy Markdown
Member

@fengyuentau fengyuentau left a comment

Choose a reason for hiding this comment

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

Perf on macOS 14.5 (Apple M1):

Geometric mean (ms)

                                  Name of Test                                       hal           hal            hal      
                                                                                 gaussianBlur  gaussianBlur   gaussianBlur 
                                                                                   Carotene   Carotene.patch Carotene.patch
                                                                                                                   vs      
                                                                                                                  hal      
                                                                                                              gaussianBlur 
                                                                                                                Carotene   
                                                                                                               (x-factor)  
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_CONSTANT)        0.006         0.002           2.70     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_REPLICATE)       0.006         0.002           2.64     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_CONSTANT)       0.013         0.008           1.53     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_REPLICATE)      0.011         0.010           1.17     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_CONSTANT)       0.011         0.011           1.01     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_REPLICATE)      0.010         0.010           0.99     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_CONSTANT)       0.010         0.010           1.00     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_REPLICATE)      0.009         0.009           1.02     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_CONSTANT)        0.024         0.021           1.15     
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_REPLICATE)       0.014         0.015           0.95     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_CONSTANT)       0.035         0.013           2.61     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_REPLICATE)      0.029         0.013           2.17     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_CONSTANT)      0.040         0.044           0.91     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_REPLICATE)     0.042         0.044           0.96     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_CONSTANT)      0.061         0.060           1.01     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_REPLICATE)     0.060         0.061           0.98     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_CONSTANT)      0.052         0.052           0.99     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_REPLICATE)     0.051         0.053           0.96     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_CONSTANT)       0.064         0.067           0.95     
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_REPLICATE)      0.070         0.064           1.08     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_CONSTANT)       0.066         0.050           1.32     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_REPLICATE)      0.068         0.050           1.35     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_CONSTANT)      0.078         0.088           0.89     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_REPLICATE)     0.080         0.087           0.93     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_CONSTANT)      0.218         0.243           0.90     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_REPLICATE)     0.232         0.241           0.96     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_CONSTANT)      0.192         0.217           0.88     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_REPLICATE)     0.183         0.214           0.86     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_CONSTANT)       0.131         0.148           0.88     
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_REPLICATE)      0.140         0.154           0.91     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_CONSTANT)      0.117         0.161           0.73     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_REPLICATE)     0.097         0.170           0.57     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_CONSTANT)     0.188         0.329           0.57     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_REPLICATE)    0.185         0.262           0.71     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_CONSTANT)     0.691         1.536           0.45     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_REPLICATE)    0.796         1.420           0.56     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_CONSTANT)     0.565         0.575           0.98     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_REPLICATE)    0.560         0.833           0.67     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_CONSTANT)      0.333         0.340           0.98     
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_REPLICATE)     0.338         0.334           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_CONSTANT)           0.014         0.008           1.62     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT101)         0.013         0.009           1.47     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT)            0.014         0.009           1.61     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REPLICATE)          0.018         0.009           2.04     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_CONSTANT)          0.013         0.012           1.07     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT101)        0.014         0.013           1.08     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT)           0.018         0.013           1.34     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REPLICATE)         0.016         0.013           1.20     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_CONSTANT)          0.016         0.016           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT101)        0.016         0.016           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT)           0.016         0.016           1.00     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REPLICATE)         0.016         0.016           1.00     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_CONSTANT)          0.014         0.014           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT101)        0.013         0.013           1.00     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT)           0.013         0.014           0.99     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REPLICATE)         0.013         0.013           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_CONSTANT)           0.030         0.031           0.97     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT101)         0.030         0.031           0.96     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT)            0.033         0.031           1.07     
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REPLICATE)          0.031         0.031           0.99     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_CONSTANT)          0.050         0.058           0.86     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT101)        0.049         0.062           0.80     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT)           0.050         0.063           0.79     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REPLICATE)         0.051         0.061           0.83     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_CONSTANT)         0.064         0.103           0.62     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT101)       0.066         0.107           0.62     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT)          0.067         0.107           0.63     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REPLICATE)        0.065         0.107           0.60     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_CONSTANT)         0.133         0.098           1.35     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT101)       0.135         0.099           1.36     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT)          0.133         0.099           1.34     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REPLICATE)        0.135         0.099           1.37     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_CONSTANT)         0.112         0.082           1.36     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT101)       0.111         0.083           1.33     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT)          0.117         0.083           1.41     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REPLICATE)        0.111         0.082           1.35     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_CONSTANT)          0.103         0.278           0.37     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT101)        0.103         0.274           0.37     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT)           0.113         0.272           0.42     
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REPLICATE)         0.103         0.274           0.38     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_CONSTANT)          0.130         0.227           0.57     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT101)        0.174         0.237           0.73     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT)           0.137         0.231           0.59     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REPLICATE)         0.126         0.229           0.55     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_CONSTANT)         0.195         0.373           0.52     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT101)       0.155         0.364           0.43     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT)          0.158         0.372           0.43     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REPLICATE)        0.194         0.370           0.52     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_CONSTANT)         0.486         0.334           1.45     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT101)       0.386         0.326           1.18     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT)          0.437         0.328           1.33     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REPLICATE)        0.604         0.325           1.86     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_CONSTANT)         0.314         0.277           1.13     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT101)       0.314         0.276           1.14     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT)          0.300         0.264           1.14     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REPLICATE)        0.314         0.273           1.15     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_CONSTANT)          0.551         0.971           0.57     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT101)        0.338         0.984           0.34     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT)           0.480         0.984           0.49     
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REPLICATE)         0.524         0.961           0.55     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_CONSTANT)         0.177         0.609           0.29     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT101)       0.180         0.610           0.30     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT)          0.164         0.609           0.27     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REPLICATE)        0.179         0.619           0.29     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_CONSTANT)        0.471         1.086           0.43     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT101)      0.344         1.090           0.32     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT)         0.313         1.119           0.28     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REPLICATE)       0.331         1.091           0.30     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_CONSTANT)        1.115         0.940           1.19     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT101)      0.946         0.946           1.00     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT)         0.951         0.946           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REPLICATE)       1.458         0.936           1.56     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_CONSTANT)        0.734         0.751           0.98     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT101)      0.760         0.752           1.01     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT)         0.742         0.742           1.00     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REPLICATE)       0.748         0.759           0.99     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_CONSTANT)         0.631         2.930           0.22     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT101)       0.802         2.911           0.28     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT)          0.773         2.898           0.27     
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REPLICATE)        0.536         2.934           0.18

@asmorkalov asmorkalov force-pushed the as/HAL_GaussianBlurBinomial_Carotene branch from b7bcf51 to e80d681 Compare July 2, 2024 09:49
@asmorkalov asmorkalov force-pushed the as/HAL_GaussianBlurBinomial_Carotene branch from e80d681 to 2799c74 Compare July 2, 2024 09:50
@asmorkalov
Copy link
Copy Markdown
Contributor Author

I got similar results for Jetson Orin. The patch leads to perf degradation there.

@asmorkalov
Copy link
Copy Markdown
Contributor Author

@fengyuentau I fixed the warning and added NEON version check to activate the branch for old CPUs only. Could you take a look again?

@fengyuentau
Copy link
Copy Markdown
Member

Perf results are better than before but still volatile. I guess this is nothing related to this patch because I can confirm that the new code is not enabled.

Geometric mean (ms)

                                  Name of Test                                       hal           hal            hal
                                                                                 gaussianBlur  gaussianBlur   gaussianBlur
                                                                                   Carotene   Carotene.patch Carotene.patch
                                                                                                                   vs
                                                                                                                  hal
                                                                                                              gaussianBlur
                                                                                                                Carotene
                                                                                                               (x-factor)
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_CONSTANT)        0.006         0.006           1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC1, BORDER_REPLICATE)       0.006         0.006           0.94
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_CONSTANT)       0.008         0.008           0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16UC1, BORDER_REPLICATE)      0.008         0.008           0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_CONSTANT)       0.010         0.010           0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 16SC1, BORDER_REPLICATE)      0.010         0.010           0.98
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_CONSTANT)       0.009         0.009           1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 32FC1, BORDER_REPLICATE)      0.009         0.009           0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_CONSTANT)        0.014         0.017           0.82
gaussianBlur3x3::Size_MatType_BorderType3x3::(127x61, 8UC4, BORDER_REPLICATE)       0.014         0.014           1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_CONSTANT)       0.026         0.026           1.02
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC1, BORDER_REPLICATE)      0.029         0.029           1.02
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_CONSTANT)      0.037         0.037           1.00
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16UC1, BORDER_REPLICATE)     0.042         0.041           1.04
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_CONSTANT)      0.062         0.060           1.03
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 16SC1, BORDER_REPLICATE)     0.061         0.061           0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_CONSTANT)      0.053         0.051           1.04
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 32FC1, BORDER_REPLICATE)     0.052         0.051           1.02
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_CONSTANT)       0.061         0.058           1.06
gaussianBlur3x3::Size_MatType_BorderType3x3::(320x240, 8UC4, BORDER_REPLICATE)      0.060         0.053           1.14
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_CONSTANT)       0.055         0.055           1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC1, BORDER_REPLICATE)      0.061         0.057           1.07
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_CONSTANT)      0.082         0.088           0.93
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16UC1, BORDER_REPLICATE)     0.087         0.088           0.99
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_CONSTANT)      0.253         0.245           1.03
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 16SC1, BORDER_REPLICATE)     0.257         0.255           1.01
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_CONSTANT)      0.216         0.191           1.13
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 32FC1, BORDER_REPLICATE)     0.215         0.190           1.13
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_CONSTANT)       0.155         0.134           1.16
gaussianBlur3x3::Size_MatType_BorderType3x3::(640x480, 8UC4, BORDER_REPLICATE)      0.112         0.118           0.95
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_CONSTANT)      0.124         0.121           1.02
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC1, BORDER_REPLICATE)     0.107         0.101           1.06
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_CONSTANT)     0.339         0.196           1.73
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16UC1, BORDER_REPLICATE)    0.228         0.172           1.32
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_CONSTANT)     0.950         0.800           1.19
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 16SC1, BORDER_REPLICATE)    1.475         0.778           1.90
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_CONSTANT)     0.586         0.666           0.88
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 32FC1, BORDER_REPLICATE)    0.584         0.672           0.87
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_CONSTANT)      0.425         0.347           1.23
gaussianBlur3x3::Size_MatType_BorderType3x3::(1280x720, 8UC4, BORDER_REPLICATE)     0.331         0.316           1.05
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_CONSTANT)           0.016         0.014           1.19
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT101)         0.012         0.015           0.84
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REFLECT)            0.015         0.020           0.75
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC1, BORDER_REPLICATE)          0.015         0.017           0.89
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_CONSTANT)          0.013         0.017           0.78
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT101)        0.013         0.017           0.81
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REFLECT)           0.015         0.018           0.81
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16UC1, BORDER_REPLICATE)         0.013         0.019           0.69
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_CONSTANT)          0.015         0.017           0.88
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT101)        0.016         0.017           0.90
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REFLECT)           0.016         0.018           0.89
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 16SC1, BORDER_REPLICATE)         0.016         0.018           0.87
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_CONSTANT)          0.014         0.015           0.96
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT101)        0.013         0.015           0.88
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REFLECT)           0.013         0.015           0.87
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 32FC1, BORDER_REPLICATE)         0.013         0.015           0.87
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_CONSTANT)           0.032         0.034           0.92
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT101)         0.031         0.031           1.00
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REFLECT)            0.030         0.032           0.95
gaussianBlur5x5::Size_MatType_BorderType::(127x61, 8UC4, BORDER_REPLICATE)          0.033         0.035           0.93
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_CONSTANT)          0.048         0.045           1.09
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT101)        0.046         0.049           0.93
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REFLECT)           0.042         0.047           0.89
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC1, BORDER_REPLICATE)         0.049         0.050           0.97
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_CONSTANT)         0.047         0.060           0.78
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT101)       0.048         0.060           0.81
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REFLECT)          0.052         0.061           0.85
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16UC1, BORDER_REPLICATE)        0.051         0.053           0.96
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_CONSTANT)         0.103         0.121           0.85
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT101)       0.103         0.118           0.88
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REFLECT)          0.100         0.121           0.83
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 16SC1, BORDER_REPLICATE)        0.102         0.122           0.83
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_CONSTANT)         0.080         0.094           0.85
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT101)       0.073         0.094           0.78
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REFLECT)          0.075         0.094           0.80
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 32FC1, BORDER_REPLICATE)        0.085         0.101           0.84
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_CONSTANT)          0.087         0.099           0.88
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT101)        0.083         0.093           0.90
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REFLECT)           0.081         0.100           0.81
gaussianBlur5x5::Size_MatType_BorderType::(320x240, 8UC4, BORDER_REPLICATE)         0.092         0.091           1.00
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_CONSTANT)          0.080         0.092           0.86
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT101)        0.074         0.098           0.75
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REFLECT)           0.075         0.091           0.83
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC1, BORDER_REPLICATE)         0.079         0.099           0.80
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_CONSTANT)         0.144         0.171           0.84
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT101)       0.104         0.145           0.71
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REFLECT)          0.131         0.156           0.84
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16UC1, BORDER_REPLICATE)        0.106         0.145           0.73
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_CONSTANT)         0.376         0.504           0.74
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT101)       0.380         0.428           0.89
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REFLECT)          0.379         0.515           0.74
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 16SC1, BORDER_REPLICATE)        0.378         0.519           0.73
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_CONSTANT)         0.296         0.331           0.90
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT101)       0.297         0.330           0.90
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REFLECT)          0.297         0.335           0.89
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 32FC1, BORDER_REPLICATE)        0.309         0.332           0.93
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_CONSTANT)          0.222         0.280           0.79
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT101)        0.224         0.320           0.70
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REFLECT)           0.225         0.298           0.76
gaussianBlur5x5::Size_MatType_BorderType::(640x480, 8UC4, BORDER_REPLICATE)         0.231         0.289           0.80
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_CONSTANT)         0.161         0.177           0.91
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT101)       0.181         0.212           0.85
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REFLECT)          0.166         0.173           0.96
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC1, BORDER_REPLICATE)        0.201         0.184           1.09
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_CONSTANT)        0.273         0.326           0.84
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT101)      0.289         0.326           0.89
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REFLECT)         0.303         0.330           0.92
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16UC1, BORDER_REPLICATE)       0.282         0.334           0.84
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_CONSTANT)        1.103         1.080           1.02
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT101)      0.934         0.948           0.98
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REFLECT)         1.045         0.947           1.10
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 16SC1, BORDER_REPLICATE)       1.455         1.182           1.23
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_CONSTANT)        0.725         0.784           0.93
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT101)      0.730         0.789           0.92
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REFLECT)         0.724         0.786           0.92
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 32FC1, BORDER_REPLICATE)       0.731         0.770           0.95
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_CONSTANT)         0.803         0.735           1.09
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT101)       0.748         0.904           0.83
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REFLECT)          0.877         0.758           1.16
gaussianBlur5x5::Size_MatType_BorderType::(1280x720, 8UC4, BORDER_REPLICATE)        0.637         0.592           1.08

@asmorkalov
Copy link
Copy Markdown
Contributor Author

@fengyuentau Do you approve the patch then?

Copy link
Copy Markdown
Member

@fengyuentau fengyuentau 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 aac8bc8 into opencv:4.x Jul 3, 2024
@asmorkalov asmorkalov mentioned this pull request Jul 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

optimization platform: arm ARM boards related issues: RPi, NVIDIA TK/TX, etc

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants