Page 89 - 《软件学报》2025年第9期
P. 89

4000                                                       软件学报  2025  年第  36  卷第  9  期


                 数向量求欧几里得距离平方          (L2 norm squared) 的算法, 向量化后的算法一次迭代可以完成           32  个  (当向量寄存器
                 长度为   128  位时) 或  64  个  (当向量寄存器长度为   256  位时) 元素的运算. 进一步观察原始测试数据可以发现, 在
                 CanMV-K230  开发板上, 当且仅当向量元素个数多于           32  个时, 向量化算法才具有优化效果. 类似的, 在           BPI-F3  开
                 发板上, 当且仅当向量元素个数多于           64  个时, 向量化算法才具有优化效果. 这说明, 当输入数据的尺寸过小, 以至
                 于无法满足一次向量化迭代的运算量时, 其向量化后的向量指令开销及额外控制开销可能超过向量优化的收益,
                 从而引发负面效果. 考虑到高性能算法库的输入通常具有较大规模, 此类负面效果并不常出现, 被认为是可以接
                 受的.

                                        表 6 不同方法在     OpenCV  图像处理模块中的加速比

                                                  BPI-F3                          CanMV-K230
                     测试用例类别
                                    定长     自动向量化      本文方法      联用     定长     自动向量化       本文方法     联用
                      Accumulate     0.15     0.99      2.09     2.10   0.15     0.79      1.69     1.71
                    AdaptiveThreshold  0.61   2.36      2.05     3.35   0.59     1.57      1.63     2.04
                     BilateralFilter  0.15    1.01      3.91     3.92   0.16     1.03      2.83     2.83
                      BlendLinear    0.57     0.91      4.04     3.99   0.56     1.04      2.35     2.35
                        Blur         0.78     2.30      2.12     3.76   0.79     1.54      1.75     2.27
                     BoundingRect    0.81     4.77      0.95     4.72   0.82     2.75      0.96     2.76
                        Box          0.83     2.14      1.24     2.47   0.85     1.47      1.17     1.62
                     BuildPyramid    0.37     1.76      1.33     1.36   0.33     1.35      0.88     0.87
                        Canny        0.19     1.23      1.30     1.30   0.19     1.11      1.28     1.27
                     CompareHist     0.66     1.23      3.02     3.06   0.67     1.08      2.20     2.17
                    CopyMakeBorder   1.10     1.11      1.07     1.10   1.24     1.23      1.23     1.23
                       Corner        0.55     1.35      1.25     1.97   0.53     1.09      1.21     1.37
                       CvtColor      0.30     1.06      1.58     1.57   0.30     1.01      1.21     1.19
                       Filter2d      0.16     1.00      3.71     3.73   0.16     0.87      2.17     2.17
                     findContours    0.72     1.03      2.39     2.51   0.72     1.04      2.23     2.23
                     GaborFilter2d   0.95     0.89      1.02     0.84   0.96     0.82      1.01     0.86
                     GaussianBlur    0.31     1.37      3.08     3.17   0.32     1.11      2.10     2.08
                  GoodFeaturesToTrack  0.58   1.23      1.20     1.54   0.56     1.12      1.19     1.31
                     HoughCircles    0.01     1.06      1.18     1.20   0.01     1.03      1.12     1.12
                     MatchTemplate   0.94     0.83      1.06     0.94   0.93     0.86      1.01     0.93
                      MedianBlur     1.38     4.26      7.30     7.22   1.31     2.91      7.78     7.75
                       Moments       0.58     1.29      0.95     1.16   0.58     1.06      0.99     1.01
                    PreCornerDetect  0.41     0.75      1.44     1.46   0.40     1.15      1.49     1.48
                       Product       0.17     1.10      2.28     2.28   0.16     0.84      1.78     1.79
                       PyrDown       0.31     1.67      1.24     1.22   0.28     1.30      0.78     0.76
                        PyrUp        0.55     1.48      2.00     1.96   0.53     1.31      1.46     1.43
                       Remap         0.42     0.90      1.00     0.90   0.44     0.78      1.01     0.79
                        Resize       0.86     1.20      1.09     1.22   0.83     1.10      1.10     1.15
                    ResizeDownLinear  0.48    1.37      1.29     1.55   0.49     1.18      1.25     1.32
                     ResizeUpLinear  0.43     1.36      1.71     1.86   0.45     1.15      1.44     1.41
                      ScharrFilter   0.20     1.54      2.39     2.26   0.19     1.10      1.58     1.51
                      SobelFilter    0.21     1.04      2.14     1.98   0.21     0.92      1.56     1.48
                     SpatialGradient  0.26    1.01      1.93     1.85   0.26     1.00      1.54     1.49
                       Square        0.17     1.06      2.29     2.29   0.17     0.83      1.94     1.94
                       Stackblur     0.57     0.80      3.66     3.46   0.64     0.84      2.83     2.77
                      Threshold      0.91     3.75      6.24     6.27   0.87     2.75      5.26     5.21
                      WarpAffine     0.16     0.92      1.01     0.92   0.16     0.86      1.03     0.86
                    WarpPerspective  0.36     0.87      1.00     0.87   0.40     0.96      1.06     0.96
                       Weighted      0.55     1.10      1.88     1.69   0.55     0.85      1.42     1.32
                        平均           0.50     1.46      2.11     2.33   0.51     1.20      1.76     1.82
   84   85   86   87   88   89   90   91   92   93   94