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

刘佳玮 等: 面向   RISC-V  架构的深度学习算子测试                                                 2399


                 不合理以及内存碎片化程度严重, 都会增加常驻内存占用. 当常驻内存超过理论内存需求的合理范围时, 通常表明
                 算子在   RISC-V  内存管理方面存在显著的优化需求.
                    缺页率用于刻画算子内存访问模式与              RISC-V  内存管理机制的匹配程度, 本文具体采用主缺页频率进行度量,
                 其计算公式为:

                                                           MajorFaults
                                                     R major  =     ,
                                                             Time
                 其中,  MajorFaults 表示算子执行过程中的主缺页次数,         Time 表示算子执行时间      (ms). 数据访问模式的时空局部性
                 不足、缓存友好性优化程度不够、内存预取策略与                  RISC-V  内存层级结构匹配程度较低, 都会提高缺页率.
                  2.3.4    系统层面
                    系统层面采用用户态        CPU  占比作为核心度量指标, 主要评估算子的             CPU  资源利用和系统协调能力表现, 重
                 点关注   RISC-V  系统资源管理机制的协调效率.
                    用户态   CPU  占比反映算子计算过程中用户态计算的纯净程度, 计算公式为:

                                                            CPU user
                                                       P user  =  ,
                                                            CPU Total
                 其中,  CPU user  表示算子执行过程中的用户态      CPU  时间,  CPU Total  表示用户态和内核态  CPU  时间的总和. 算子实现
                 中包含的过量系统调用操作、I/O          操作阻塞导致的      CPU  资源空闲, 以及内存访问模式不当引起的处理器等待时间
                 过长都会降低用户态占比, 导致系统开销增大.
                  2.4   基于复杂度放大系数的差分测试
                    基于前述多层面度量指标体系, RIVdoo          提出基于复杂度放大系数的差分测试策略, 通过分析算子在不同复杂
                 度层级间各项度量指标的放大系数模式来识别实现问题. 在面向基于                       RISC-V  架构的平台进行部署时, 不同算子
                 库实现的同个算子在面临复杂度增加时, 各项度量指标应表现出相对一致的变化模式, 其复杂度放大系数分布应
                 呈现相似的统计特征. 当某算子实现的放大系数模式显著偏离其他实现的统计分布时, 表明该实现可能存在                                 RISC-V
                 架构适配缺陷或质量问题.
                  2.4.1    放大系数计算
                    复杂度放大系数的核心思想在于量化算子实现在不同工作负载下的性能变化特征. 由于                              RISC-V  平台的资源
                 约束特性, 算子在复杂度增加时往往表现出非线性的性能退化模式, 这种退化程度的差异正是识别实现问题的关
                 键信号. 通过建立标准化的放大系数计算框架, 可以将不同算子库在复杂度敏感性方面的差异转化为可比较的量
                 化指标. 对于每个待测算子实现, 分别在高、中、低这                3  个复杂度层级下执行测试, 收集各项度量指标在不同复杂
                 度层级的数值. 针对任一度量指标          Metric, 构建多层级复杂度放大系数函数:

                                            Metric high  Metric medium   Metric high
                                       R h/l =     , R m/l =      , R h/m =      .
                                            Metric low    Metric low    Metric medium
                    这  3  个比值函数从不同维度揭示算子实现在             RISC-V  平台上的性能特征.     R h/l  反映算子从基础负载跃升至极
                 限负载时的性能退化倍数, 该放大系数异常增大通常表明算子实现在面临                        RISC-V  平台的综合资源压力时缺乏有
                 效的负载适应机制.      R m/l  体现算子在不对称参数配置下相对于基础配置的性能变化, 该放大系数的异常波动往往
                 指向算子在特定资源维度上的适配问题, 如内存访问模式优化不当或向量化计算效率低下.                              R h/m  揭示算子从中等
                 负载向极限负载过渡时的性能变化梯度, 该放大系数的异常特征可以帮助识别算子实现在高负载区间是否存在性
                 能突变或稳定性问题. 通过联合分析这            3  个放大系数的数值特征和变化模式, 可以构建算子实现在                  RISC-V  平台

                 上的完整复杂度敏感性轮廓, 为异常检测和问题定位提供丰富的分析维度.
                  2.4.2    异常损失检测
                    为客观刻画算子在不同复杂度配置下的性能行为差异, 并识别可能需要进一步关注的实现情况, RIVdoo                               采用
                 基于四分位距     (IQR) 的离群点检测方法. 收集所有算子在不同库实现上的放大系数                    R (包括  R h/l 、  R m/l  和  R h/m ), 计
   75   76   77   78   79   80   81   82   83   84   85