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

方燕飞 等: 申威众核处理器访存与通信融合编译优化                                                       2659


                    因此, 若用节省的时间开销表示优化收益, 则优化收益计算如公式                    (11) 所示:

                                            [
                                TR loop =ITERS× Na1×(Delay mem − Delay ldm )+ Na2×(Delay mem − Delay sdm )+
                                                                        ]
                                                             ITERS
                                       Na3×(Delay sdm − Delay ldm )−  ×T trans                       (11)
                                                            block_len
                    公式  (6)–公式  (11) 中相关变量含义见表      5.
                    从循环优化前后的时间开销公式            (9)、公式  (10) 和循环收益公式     (11) 可以看出, 优化前后的性能变化由两部
                 分因素构成, 一部分是数据存储层次提升后带来的访存延迟的下降, 这部分性能变化是固定的, 是对性能提升正向
                 的贡献. 另外一部分是新增的优化传输开销, 需要尽量减小这部分开销. 结合公式                        (8) 和公式  (9) 可以看出, 优化传
                 输开销   T tran 与循环分块数成正比, 与分块长度       block_len  是成反比的, 进一步结合公式      (4) 和公式  (5) 中缓冲区空
                          s
                 间需求制约关系可以得出, 在满足缓冲区需求的前提下                  block_len  越大越好. 具体的循环分块求解算法在第          4.2  节
                 中进行阐述.

                                                     表 5 变量一览表     2

                     参数                      含义                              SW26010Pro上的参数值
                     Na1           循环中mem2ldm的数组的访问个数                               -
                     Na2           循环中mem2sdm的数组的访问个数                               -
                     Na3           循环中sdm2ldm的数组的访问个数                               -
                   Block_num     循环分块数, Block_num= ITERS/block_len                  -
                                  主存到LDM或SDM的DMA启动开销                         DMA启动开销为200拍
                    T0 dma
                                  LDM或SDM到LDM的RMA启动开销                         RMA启动开销为50拍
                    T0 rma
                    B_RMA                  DMA带宽                         DMA带宽为平均单核心640 MB/s
                    B_DMA                  RMA带宽                            RMA带宽为点对点4 GB/s
                                                                   当DMA/RMA的数据长度超过128 B, 取µ=1, 否则取
                      µ                    带宽利用率
                                                                               µ=数据长度/128
                                        主存空间访问延迟                               LDM访问延迟6拍
                   Delay mem                      (见算法
                                        SDM空间访问延迟                          SDM无冲突访问延迟约50拍
                   Delay sdm
                                        LDM空间访问延迟                           LDM无冲突访问延迟6拍
                   Delay ldm
                             循环中其他非优化数组访问的开销, 在实际评估时
                     T other                                                        -
                                     这部分开销不需要参与计算
                    ITERS                循环迭代总次数                                    -

                 4.2   基于二分搜索的循环分块和       region  求解方法
                    通过第   4.1 节中构建的收益开销评估模型分析得出, 需要求解一个循环分块方案, 使得循环分块大小                          block_len
                 尽量大, 以降低    DMA/RMA  启动开销, 提升批量数据传输效率, 同时要满足所有                region  的缓冲区空间需求不超过
                 用户给出的缓冲区大小. 对于数组访问较多, 循环较大的情况下, 可能有很多种分块方式和数组分区方案, 如何在
                 较短时间内寻找最佳的循环分块和分区方案, 是编译器实现过程中需要解决的一个关键问题.
                    本文设计了基于二分搜索的求解算法                     1), 可以在  logN  的时间复杂度下求解得到最优的循环分块长
                 度  block_len  及  region  划分方案. 算法主要思想为在当前搜索的循环分块长度下, 按照             region  更新算法  (见算法
                 update_region) 更新  region  的划分, 并在空间制约关系下进行二分搜索, 直到求得满足空间需求的最大                  block_len
                 时停止搜索. 算法复杂度为        logN, 具体算法流程描述见算法        1.

                 算法  1. 基于二分搜索的循环分块和         region  求解算法.
                 输入: 当前  block_len  和 region  信息;
                 输出: 缓冲区空间需求能被满足的最大            block_len  和相应的  region  信息.
   78   79   80   81   82   83   84   85   86   87   88