Page 83 - 《软件学报》2026年第6期
P. 83

2402                                                       软件学报  2026  年第  37  卷第  6  期


                 值普遍在   1.2–2.0  之间, 表明  TFLite 在算子执行过程中更多依赖用户态计算而较少触发系统调用. 特别是算子                     15
                 (FullyConnected)、算子  33 (Softmax) 在高复杂度下的用户态   CPU  占比接近   100%, 而  TVM  在这些算子上出现明
                 显的系统调用开销. 缺页率几乎全部呈现深蓝色, 算子                7 (Conv2D)、算子  42 (BiasAdd) 等在高复杂度下的缺页率
                 比值接近    0.5, 算子  40 (AVERAGE_POOL_2D) 和算子  41 (BatchNorm) 的比值甚至低于    0.4, 表明在这些场景中
                 TFLite 的内存访问行为具有更好的局部性特征, 而            TVM  的动态内存分配策略在数据规模超过缓存容量后产生严
                 重的缓存失效. 这归因于       TFLite 针对端侧小资源场景的专门优化: 预先将优化后的算子内核和中间结果加载到内
                 存中, 避免运行时的动态编译和频繁的内存页调度, 从而维持接近                    100%  的用户态执行并大幅减少缺页中断. 值得
                 注意的是, 这类复杂度相关的差异仅在跨层级测试中才能被充分观测, 若仅在低复杂度场景下进行测试, 则难以体
                 现其影响.

                                                      2.0                                          2.0
                      常驻内存                                         常驻内存
                       缺页率                            1.5            缺页率                           1.5
                  用户态CPU占比                            1.0 TFLite/TVM比  用户态CPU占比                    1.0 TFLite/TVM比
                      CPU时间                           0.7          CPU时间                           0.7
                      精度损失                                         精度损失
                                                      0.5                                          0.5
                           1  5  9 13 17 21 25 29 33 37 41 45 47         1  5  9 13 17 21 25 29 33 37 41 45 47
                                     算子编号                                          算子编号
                 图 3    深度学习算子在    RISC-V  平台上的多维度性能           图 4    深度学习算子在    RISC-V  平台上的多维度性能
                                表现  (高复杂度)                                   表现  (中复杂度)


                                                                             2.0
                                             常驻内存
                                              缺页率                            1.5
                                         用户态CPU占比                            1.0 TFLite/TVM比
                                             CPU时间                           0.7
                                             精度损失
                                                                             0.5
                                                  1  5  9 13 17 21 25 29 33 37 41 45 47
                                                            算子编号
                                  图 5 深度学习算子在       RISC-V  平台上的多维度性能表现        (低复杂度)

                    系统层面的用户态       CPU  占比数据揭示了库间实现机制的根本差异: TFLite 在绝大多数情况下维持接近                     100%
                 的用户态占比, 而     TVM  在低复杂度场景下出现显著的系统开销             (如  Conv2D  低复杂度时系统开销高达       26.7%). 然
                 而, TFLite 的性能优势以更高的内存占用为代价. 常驻内存维度显示, TFLite 在几乎所有算子和所有复杂度层级下
                 的内存占用比值均小于        1; 部分算子   (如算子  7 (Conv2D)) 在高复杂度下的比值几乎只有一半, 表明           TFLite 在计算
                 密集型算子上需要额外        60%–100%  的内存开销. 相比之下, 轻量级算子         (如算子  29 (ReLU) 、算子  11 (ELU)) 的常
                 驻内存比值则略高, 内存代价相对较小.
                    综合上述结果可以看出, RIVdoo 通过多维度指标和复杂度分组分析, 系统性刻画了                      TFLite 和  TVM  在  RISC-V
                 平台上的性能权衡关系: TFLite 在计算密集型算子            (Conv2D、MatMul、FullyConnected) 上以  60%–100%  内存开
                 销换取   30%–50%  速度提升, 在轻量级算子      (ReLU、Abs) 上以  10%–30%  内存开销换取    50%–60%  速度提升, 为开
                 发者在性能与资源约束之间的权衡提供了全面依据. 其次, RIVdoo                 的复杂度分组验证了优化策略在不同数据规模
                 下的一致性, 表明     TFLite 的端侧优化在    RISC-V  平台上具有良好的可扩展性. 第三, RIVdoo        有助于明确两种算子
                 库在不同资源约束条件下的适用范围: 内存充足时选择                  TFLite, 内存受限时选择    TVM, 这种差异化的性能洞察为
                 RISC-V  深度学习应用的算子库选择提供了精确指导. 因此, RIVdoo              提供的分析结果可作为         RISC-V  平台上算子
                 库选择和优化决策的参考依据.
                    图  6−图  8 展示了  47 个深度学习算子在     RISC-V  向量扩展指令   (RVV) 支持下的多维度性能表现, 分别对应高、
                 中、低这    3  个复杂度层级. 热力图横轴为算子编号           (1–47), 纵轴为  5  个关键性能指标: 常驻内存、缺页率、用户
                 态  CPU  占比、CPU  时间和精度损失, 颜色深浅表示          RVV  启用与禁用配置下的性能比值          (rw/rv), 蓝色表示  RVV
                 带来性能提升     (比值<1), 红色表示   RVV  导致性能下降     (比值>1).
                    实验结果揭示了       RVV  在不同算子类型和复杂度配置下呈现出显著差异化的性能行为. 计算密集型算子在高
   78   79   80   81   82   83   84   85   86   87   88