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

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


                 评估本文所提出的优化方法及其实现方案对高性能算法库的性能优化效果.

                 4.1   实验环境与测试集

                    实验平台为     CanMV-K230  开发板和  Banana Pi BPI-F3  开发板, 开发板的相关参数如表      4  所示.

                                                    表 4 实验平台信息表

                                  参数名称               CanMV-K230开发板         Banana Pi BPI-F3开发板
                                 处理器芯片                   嘉楠 K230               进迭时空 K1
                                 处理器内核                   玄铁 C908               进迭时空 X60
                             处理器内核数量(向量)                   1个                     8个
                                向量寄存器长度                   128 bits               256 bits
                                向量扩展标准                RISC-V Vector 1.0      RISC-V Vector 1.0
                                                        32 KB L1-I              32 KB L1-I
                                    缓存                  32 KB L1-D             32 KB L1-D
                                                         128 KB L2              512 KB L2
                                    主频                   1.6 GHz                 2.0 GHz
                                    内存                 512 MB DDR3             4 GB DDR3

                    考虑到编译器对于        RISC-V  指令集的支持日益完善, 本文采用撰写时            GCC 编译器的最新发行版         (14.1), 将
                 OpenCV  源代码交叉编译到      RISC-V  向量扩展平台上, 选取     OpenCV  性能测试套件中的核心        (core) 模块测试集与
                 图像处理   (imgProc) 模块测试集, 在上述两种开发板上分别运行, 获得各个测试用例的执行时间, 用于评估本文方
                 法的性能优化效果.
                    核心模块测试集包含        3 363  个测试用例, 用于评估     OpenCV  核心组件的性能, 包含对向量或矩阵的算术和逻
                 辑运算等操作. 本文按照测试用例的操作类型将其分为                  38  个类别; 图像处理测试集包含        4 122  个测试用例, 用于
                 评估  OpenCV  图像处理相关操作的性能, 包含对向量或矩阵的滤波与模糊、图像金字塔构建、轮廓检测等操作,
                 本文按照测试用例的操作类型将其分为              54  个类别. 取各测试类别内所有测试用例的平均执行时间用于性能评估.

                 4.2   实验设计
                    为了评估本文所提出的优化方法和实现方案对算法库的性能优化效果, 设置如下                           5  组实验.

                    ● 标量版本: 不启用任何向量优化方法的测试用例, 作为测试基准;
                    ● 定长版本: 采用    OpenCV  现有固定长度的通用内建函数的测试用例;
                    ● 自动向量化版本: 只使用编译器自动向量化, 而不采用任何内建函数优化方法的测试用例;
                    ● 可变长版本 (本文方法): 采用适用于可变长体系结构的通用内建函数优化方法的测试用例;
                    ● 可变长+自动向量化版本        (联用): 同时采用自动向量化和可变长通用内建函数优化的测试用例, 也是用户构
                 建  OpenCV  时的默认版本.
                    根据上述    5  组实验的结果, 第    4.3  节通过比较测试用例的执行时间与相对于标量版本的加速比, 验证了本文
                 方法对于算法库在       RISC-V  平台上性能优化的有效性. 第       4.4  节基于寄存器分组特性进一步讨论了本文方法的性
                 能提升原因.

                 4.3   面向  RISC-V  向量扩展的硬件抽象层效果分析

                    为了评估本文方法在        RISC-V  平台上性能优化效果, 将      OpenCV  核心模块的测试用例分别编译得到           5  个版本
                 的测试程序, 在两种开发板上执行并统计各类别的平均执行时间.
                    图  5  展示了各类测试用例在       RISC-V  开发板上的平均执行时间, 其中纵坐标采用对数轴. 从图                5(a) 中可以发
                 现, DCT、DFT、Eye、LUT、Reduce、Rotate、Round、SorIdx、Sort、TransposeND    和  Zeros 等操作在各自   5  个
                 版本中的执行时间均近似, 说明编译器自动向量化无法作用于这些操作, 且                       OpenCV  源码中也未使用通用内建函
                 数实现这些操作的向量化版本, 其原因是这些操作在给定的场景中不具备向量优化机会, 不在本文讨论范围内.
   81   82   83   84   85   86   87   88   89   90   91