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 信息.