Page 82 - 《软件学报》2026年第6期
P. 82
刘佳玮 等: 面向 RISC-V 架构的深度学习算子测试 2401
为了回答上述研究问题, 本研究在开发环境中完成算子的交叉编译等预处理工作. 该环境采用配置 AMD
TM
Ryzen 5 5600H 处理器的 Ubuntu 24.04.2 LTS 系统, 内核版本为 6.14.0-29-generic. 开发环境安装 Python 3.11 作
为主要开发语言, TensorFlow Lite 2.18.0 用于模型导出和 TFLite 算子库的构建, Apache TVM 0.19.0 用于 TVM 算
子库的代码生成和优化. 该环境覆盖了 RISC-V 部署环境中的主流算子库 [42] , 确保了所有测试算子在部署前的标
准化处理, 为后续的跨平台对比提供一致的起始状态.
本研究选用 VisionFive 2 开发板作为 RISC-V 部署环境和目标测试平台. 该开发板搭载 JH7110 处理器 (四核
64 位 RISC-V CPU, 主频 1.5 GHz), 运行 Linux 5.15.0-starfive 操作系统. 该配置代表了当前 RISC-V 生态中的主流
硬件水平, 具备完整的深度学习算子部署和执行能力. 在该环境中收集的性能数据反映了算子在真实 RISC-V 硬
件约束下的实际表现, 是 RIVdoo 方法评估的核心数据源.
本研究选择了 47 个主流的深度学习算子进行系统性评估, 具体为: (1) Abs, (2) Add, (3) AvgPool2D (TVM 兼
容表示), (4) Cast, (5) Ceil, (6) Concatenation, (7) Conv2D (TVM 兼容表示), (8) Cos, (9) DepthwiseConv2D, (10) Div,
(11) ELU, (12) ExpandDims, (13) Exp, (14) Floor, (15) FullyConnected, (16) HardSwish, (17) L2Normalization,
(18) LeakyReLU, (19) Logistic, (20) LogSoftmax, (21) Log, (22) Maximum, (23) MaxPool2D, (24) Mean, (25) Minimum,
(26) Mul, (27) Neg, (28) ReLU6, (29) ReLU, (30) Round, (31) Rsqrt, (32) Sin, (33) Softmax, (34) Sqrt, (35) Squared-
Difference, (36) Square, (37) Sub, (38) Sum, (39) Tanh, (40) AVERAGE_POOL_2D (TFLite 兼容表示), (41) BatchNorm,
(42) BiasAdd, (43) Conv2DLite, (44) Dense, (45) MatMul, (46) SoftmaxLite, (47) CONV_2D (TFLite 兼容表示). 这些
算子覆盖了深度学习模型的核心计算组件, 具备不同的计算特征和资源需求模式, 能够全面验证 RIVdoo 方法在
多样化算子类型上的适用性. 实验覆盖了计算密集型 (Conv2D 等)、内存密集型 (BatchNorm 等) 和轻量型
(ReLU 等) 这 3 种主要计算模式. 这种分类设计能够全面评估 RISC-V 架构在面对不同类型计算负载时的适配表
现, 识别平台在各种计算模式下的性能特征和约束限制. 每个算子都同时测试 TVM 和 TFLite 两个主流深度学习
算子库的实现, 并在 RISC-V 向量扩展指令 (RVV) 启用/禁用两种配置下分别进行评估, 以覆盖 RISC-V 架构的特
殊场景, 为 RIVdoo 的差分测试方法提供充足的库间对比和架构特性对比数据基础. 通过比较不同算子库在相同
算子上的实现质量以及 RVV 对算子性能的影响, 能够验证损失比值差分测试在识别异常实现方面的准确性, 证
明 RIVdoo 在 RISC-V 复杂应用场景中的适用性.
[8]
此外, 我们选择两个典型的算子测试方法作为对比基线: (1) Predoo , 一种基于变异和运行时反馈的测试生成
方法; (2) DPM [21] , 一种基于动态程序监控和反馈引导的参数生成方法. 由于这两个方法都依赖运行时反馈进行测
试输入的迭代搜索, 而 RISC-V 平台采用静态编译模式, 即每次参数变化都需要重新编译整个算子库并进行静态
链接, 导致无法获得 RISC-V 开发板的即时反馈. 因此, 我们使用 Predoo 和 DPM 在其原有平台 (x86) 上搜索生成
的测试输入, 将这些输入迁移至 RISC-V 平台进行测试, 以评估不同方法生成的测试用例在 RISC-V 平台上的有效性.
4 实验结果
4.1 研究问题 1
图 3−图 5 展示了 47 个深度学习算子在 RISC-V 平台上使用 TFLite 和 TVM 两个算子库实现时的多维度性能
表现, 分别对应高、中、低这 3 个复杂度层级. 热力图横轴为算子编号 (1–47), 纵轴为 5 个关键性能指标: 常驻内
存、缺页率、用户态 CPU 占比、CPU 时间和精度损失, 颜色深浅表示 TFLite 与 TVM 的性能比值 (TFLite/TVM),
蓝色表示 TFLite 性能更优 (比值<1), 红色表示 TVM 性能更优 (比值>1). 实验结果揭示了两个算子库的显著性能
差异, CPU 时间维度显示 TFLite 具有明显的速度优势, 在 3 个复杂度层级下, 几乎所有算子的 CPU 时间比值均呈
现深蓝色, 表明 TFLite 执行时间比 TVM 短 30%–50%. 算子 42 (BiasAdd) 的比值在高、中、低这 3 个层级分别约
为 0.6、0.6、0.7, 算子 7 (Conv2D) 的比值约为 0.5、0.6、0.7, 显示出该趋势在不同数据规模下具有一致性. 值得
注意的是, 轻量级算子如算子 29 (ReLU)、算子 1 (Abs) 等在 CPU 时间维度的比值更接近 0.4–0.5, 表明在简单计
算场景下 TFLite 的实现能够获得更高的执行效率.
用户态 CPU 占比和缺页率维度揭示了 TFLite 的“空间换时间”优化策略. 用户态 CPU 占比呈现显著红色, 比

