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

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


                 Conv2D  算子为例, 其使用标准批量、标准通道           (输入输出)、标准空间以及        Conv2D  卷积核的组合. 通过这种参数
                 选择和组合策略, 每个算子都能够获得与其计算特性相匹配的复杂度配置, 同时不同算子之间又保持了统一的复
                 杂度层级体系.

                                             表 1 主要参数的区复杂度区间分组配置

                     参数类别                  参数名称                 低复杂度          中复杂度           高复杂度
                                           标准批量                   [1, 2)        [2, 4)         [4, 8)
                     批量维度
                                           扩展批量                   [1, 2)        [2, 8)        [8, 16)
                      (batch)
                                            大批量                  [1, 128)     [128, 512)     [512, 2 048)
                                        标准输入通道 (in C )           [8, 64)      [64, 128)      [128, 256)
                     通道维度              扩展输出通道 (out C )           [8, 64)      [64, 256)      [256, 512)
                                         宽范围通道 (C)               [1, 32)      [32, 256)      [256, 512)
                     空间维度                  标准空间                  [8, 28)       [28, 56)       [56, 112)
                      (H, W)               扩展空间                  [8, 32)      [32, 112)      [112, 224)
                      核尺寸                   卷积核                   [1, 3)        [1, 3)         [3, 5)
                    (kernel size)           池化核                   [2, 3)        [3, 5)         [5, 7)
                    步长 (stride)              步长                   [1, 2)        [2, 3)         [3, 4)
                                    标准特征维度 (in_dim, out_dim)    [64, 512)    [512, 2 048)   [2 048, 4 096)
                     特征维度
                                     扩展特征维度 (feature_dim)       [64, 512)    [512, 4 096)   [4 096, 8 192)
                                       矩阵行列维度 (M, N)            [32, 256)    [256, 1 024)   [1 024, 2 048)
                     矩阵维度
                                        矩阵内积维度 (K)              [32, 128)    [128, 1 024)   [1 024, 2 048)


                                                  表 2 算子和参数映射关系

                    算子类别                             算子列表                                 涉及参数
                                                     Conv2D                         batch, in C , out C , H, W, kernel
                     卷积类                                                              batch, C, H, W, kernel,
                                                  DepthwiseConv2D
                                                                                        depth_multiplier
                     池化类                        AvgPool2D, MaxPool2D                batch, C, H, W, kernel, stride
                    全连接类                         Dense, FullyConnected                batch, in_dim, out_dim
                   矩阵运算类                              MatMul                               M, K, N
                    归一化类                       BatchNorm, L2Normalization                batch, C, H, W
                                                 Softmax, LogSoftmax                   batch, feature_dim
                     归约类
                                                    Mean, Sum                            batch, C, H, W
                     激活类         ReLU, ReLU6, ELU, LeakyReLU, HardSwish, Logistic, Tanh, PReLU  batch, C, H, W
                 逐元素二元运算类        Add, Sub, Mul, Div, Maximum, Minimum, SquaredDifference, BiasAdd  batch, C, H, W
                 逐元素一元运算类         Abs, Ceil, Floor, Round, Neg, Cos, Sin, Exp, Log, Sqrt, Rsqrt, Square  batch, C, H, W
                                 Equal, NotEqual, Greater, GreaterEqual, Less, LessEqual, LogicalAnd,
                   逻辑运算类                                                                 batch, C, H, W
                                                 LogicalOr, LogicalNot
                                            Concatenation, ExpandDims, Pad, Cast         batch, C, H, W
                   张量操作类
                                                     Reshape                           batch, total_elements

                    基于参数池的设计使得         RIVdoo  具有良好的算子扩展能力. 当需要测试新的算子时, 首先识别该算子涉及的
                 参数维度类型, 然后从表       1  的参数池中选择对应的参数区间, 最后组合生成低、中、高这                   3  个复杂度配置. 由于参
                 数池的设计基于硬件约束的理论分析, 任何使用这些参数的算子组合都能够保证明显的复杂度梯度, 无需针对每
                 个新算子重新验证分组有效性.
                    考虑到   RISC-V  平台的性能表现对参数配置具有高度敏感性, 即使在同一复杂度区间内, 不同的具体参数值
                 也可能触发截然不同的性能模式和资源利用模式. 因此, 在确定各复杂度层级的参数区间后, RIVdoo                            在每个区间
                 内采用随机采样策略生成具体的测试参数配置. 通过随机采样策略, RIVdoo                    能够有效避免固定参数配置可能引入
   73   74   75   76   77   78   79   80   81   82   83