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

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


                    相对于访主存版本, 4      个规模下, 自动单缓冲优化、手工单缓冲优化、自动双缓冲优化、手工双缓冲优化的
                 平均加速比分别为       15.28、15.71、16.21  和  17.03. 对比自动单缓冲优化和手工单缓冲优化版本, 在          4  个规模下, 自
                 动单缓冲优化平均性能达到手工单缓冲优化版本的                  97.3%; 对比自动双缓冲优化和手工双缓冲优化版本, 在               4  个
                 规模下, 自动双缓冲优化平均性能达到手工双缓冲优化版本的                     95.2%. 双缓冲版本较单缓冲版本没有明显的性能
                 提升的原因是该程序计算部分比例明显高于访存部分, 实际使用中双缓冲在程序计算和访存占比相当的情况下才
                 会获得较好的效果.
                    测试结果说明, 本文实现的优化方法能够获得很好的优化效果. 经过分析, 对于该测试程序, 自动优化的性能
                 略低于手工优化的性能的原因主要是两方面, 一是自动变换要统一考虑循环上下是变量, 以及循环不能被分块整
                 除等情况, 生成的分块代码比手工代码更加复杂; 二是计算分块大小时, 为了统一考虑数组可能的多个访问, 数据
                 按向量宽度对界等情况, 预留了小部分缓冲空间, 导致自动计算得到的分块大小略小于手工计算结果.

                 5.3   sdm2ldm  优化编译指示测试分析
                    sdm2ldm  优化编译指示的测试程序使用了根据图形处理程序核心计算编写的测试程序. 核心计算过程需要使
                 用  sin  和  cos 两个三角函数的值, 由于其取值范围是确定的, 可将其提前计算, 计算过程用查表代替. 但表空间的规
                 模随问题规模增大, 测试过程对能够进行             sdm2ldm  优化的规模区间进行了测试分析. 测试结果如图              18  所示, 图中
                 展示了该测试程序在       4  个不同数据规模下的程序运行时间, 单位为             ms.

                                                           未优化   优化
                                           7.00
                                                                          5.86
                                           6.00                  4.57
                                          运行时间 (ms)  4.00  1.83   3.17   1.88   2.49
                                           5.00
                                           3.00
                                           2.00
                                           1.00    1.10    1.29
                                             0
                                               4 KB 规模  8 KB 规模  12 KB 规模 16 KB 规模
                                                图 18 sdm2ldm  优化效果对比图
                                                       mem2sdm
                    相对于未优化版本, 优化版本在          4  个规模下平均加速比达到        2.23. 由于计算过程中的核心数据占用了较多的
                 ldm  空间, 该程序只使用了单缓冲优化. 如果规模继续增大, 则无法将                sin  和  cos 的表放到  sdm  空间, 此时可将表布
                 局在主存空间, 使用      mem2ldm  进行优化. sdm2ldm  与  mem2ldm  的区别是  sdm2ldm  可以利用片上的通信网络带宽,
                 提出  sdm2ldm  优化的目的是将对访存带宽的需求转化为片上通信带宽, 更好地利用处理器资源.

                 5.4   mem2sdm  优化编译指示测试分析
                    mem2sdm  优化编译指示的测试程序是根据口令恢复类应用常用的                   bitmap  模式编写的测试程序. 这类程序中,
                 对  bitmap  的访问是离散访问, bitmap  越大越能获得更高的结果比对成功率, 因此适合将               bitmap  放入  sdm  空间.
                    测试结果如图      19  所示, 在  6  个测试规模下, 相对于访主存版本, 自动缓冲优化和手工缓冲优化平均得到                    1.34
                 和  1.35  的加速比. 自动缓冲优化的性能和手工缓冲优化很接近, 稍有差异的原因是自动变换的代码增加了针对缓
                 冲空间大小的多版本代码, 比手工代码复杂. 在该程序变换过程中, 因对                     bitmap  的访问时随机访问, 在进行访问分
                 析时, 如果能将    bitmap  全部装入缓冲区, 则进行              优化, 否则放弃优化, 该测试程序也无需进行双缓冲
                 优化.

                 6   总结与展望

                    申威众核处理器提供的         SPM  结构、DMA   传输机制和片上高速        RMA  通信机制等存储结构特点给应用程序
                 访存性能优化带来了很多机会, 同时也对程序开发人员和编译优化提出了很大挑战. 本文提出了一种基于编译指
                 示的多级存储层次上访存与通信融合的编译优化方法, 通过编译指示的功能设计引导用户程序给编译器传递程序
   84   85   86   87   88   89   90   91   92   93   94