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

韩柳彤 等: 面向   RISC-V  向量扩展的高性能算法库优化方法                                             4001


                    为了在实际应用场景中评估该方法对高性能算法库的性能优化效果, 如图                         6  所示, 本文选用计算机视觉领域
                 常用的高斯模糊      (Gaussian blur)、边缘检测与二维码检测这       3  个场景, 使用  C++语言和   OpenCV  提供的编程接口
                 编写了   3  个应用程序. 在链接时, 分别链接采用本文方法优化的              OpenCV  算法库和标量版本的      OpenCV  算法库, 并
                 在  BPI-F3  开发板上运行, 二者输出的图像一致, 但在执行性能上体现出了差异.















                                       (a) 原始图像                           (b) 高斯模糊
















                                       (c) 边缘检测                          (d) 二维码检测
                                              图 6 所选计算机视觉算法的效果图

                    在计算机视觉领域不同场景的应用程序中, 都需要对原始图像进行存取和相应操作. 在实验评估中, 我们分别
                 统计了图像读取、图像操作和图像输出这              3 个部分的执行时间. 如后文图        7 所示, 对于尺寸为     4096  × 3072 的  JPEG
                 图像, 无论是否应用向量优化, 图像读取和存储的耗时并无显著差异, 这是由于文件                         I/O  是外部存储设备和内存之
                 间的数据传输过程, 其主要受限于外部存储设备速度和带宽等非向量优化所作用的因素; 而在高斯模糊场景中, 模
                 糊算子中的计算或访存密集型操作均使用通用内建函数编写, 可以通过本文方法在                           RISC-V  设备上获得性能提升,
                 当算核尺寸为     63  × 63  时, 所用时间由标量版本的    15 291 ms 下降到  2 679 ms, 图像操作部分的加速比为     5.71  倍, 包
                 含图像存取的实际应用场景加速比为             3.73  倍; 边缘检测所涉及的算法也可以使用向量优化, 能够获得                1.8  倍的加
                 速比, 但由于其本身计算复杂度较低, 计算量较小, 实际应用场景中的主要时间开销是由无法优化的图像存取操作
                 带来的, 只能获得     1.06  倍的加速比; 二维码检测场景与高斯模糊场景类似, 图像操作部分的时间开销占比显著高
                 于图像存取部分, 因此在二维码检测算子的加速比为                 4.8  倍时, 整体应用场景也能够获得较高         (4.05  倍) 的加速比.

                 4.4   RISC-V  向量扩展的寄存器分组特性对于性能优化的影响
                    RISC-V  向量扩展的寄存器分组特性同样可以用于优化通用内建函数的                      RISC-V  向量扩展后端实现. 由于部
                 分  SIMD  扩展仅有  16  个向量寄存器, 开发者在使用        OpenCV  的通用内建函数编写加速算法时, 通常仅使用不超
                 过  16 个向量寄存器, 防止在这部分平台上造成寄存器溢出, 产生额外的访存指令, 影响加速效果. 在如今主流                           SIMD
                 扩展普遍提供     32  个向量寄存器的情况下, 兼容早期平台的保守寄存器使用策略将导致硬件资源浪费, 无法达到最
                 优效率.
   85   86   87   88   89   90   91   92   93   94   95