Page 82 - 《软件学报》2024年第6期
P. 82
2658 软件学报 2024 年第 35 卷第 6 期
常量. 不妨设 region 中有 n 个访问, 且有 S 1 < S 2 <…<S n . 并设该数组的元素大小为 region_size (根据转换规则转
换后的元素大小), 循环分块长度为 block_len, 则一个 region 的空间需求 region_space 的计算如公式 (1) 所示:
( )
region_space = block_len+S n −S 1 ×region_size (1)
循环优化总的 DMA 或 RMA 缓冲区开销计算如公式 (2) 和公式 (3) 所示:
∑
M 1 +M 3
ldm_space = region_space i (2)
i=1
∑
M 2
sdm_space = region_space i (3)
i=1
缓冲区需求必须不能超过编译指示中给出的缓冲区大小, 因此, 循环分块大小 block_len、region 数与缓冲区
大小的约束关系如公式 (4) 和公式 (5) 所示:
∑
M 1 +M 3
ldm_space = region_space ⩽ ldm_size (4)
i=1 i
∑
M 2
sdm_space = region_space ⩽ sdm_size (5)
i
i=1
公式 (1)–公式 (5) 的相关变量含义见表 4. 从公式 (1)–公式 (5) 可以看出, 循环分块长度 block_len 受缓冲区空
每个循环分块的数据传输时间开销计算如公式
间大小的制约.
表 4 变量一览表 1
参数 含义
block_len 循环分块长度, 即分块内的迭代数
N1个数组 (mem2ldm)的访问region数
M 1
N2个数组 (mem2sdm)的访问region数
M 2
N3个数组 (sdm2ldm)的访问region数
M 3
第i个region的数组元素长度
region_size i
第i个region需要的缓冲区空间大小
region_space i
ldm_space LDM缓冲空间需求总和
sdm_space SDM缓冲空间需求总和
ldm_size 编译指示中给出的LDM缓冲区空间大小
sdm_size 编译指示中给出的SDM缓冲区空间大小
每个 region 的优化时间收益计算计算如公式 (6) 所示:
[ ]
region_size
TR region = ITERS× Delay opt − T0+ Block_num× (6)
B×µ
其中, Delay opt 值根据 region 的数组优化类型取 Delay mem Delay sdm 或者 Delay sdm Delay ldm , B 根据缓冲数据传输
–
–
方式取 B_DMA 或者 B_RMA. 其他参数见表 4 和表 5.
每个 region 的收益开销比如公式 (7) 所示:
[ ]
region_size
ITERS× Delay opt − T0+ Block_num×
B×µ
P region = (7)
region_space
(8) 所示:
( ) ( )
∑ ∑
M 1 +M 2 region_space i M 3 region_space i
T trans = (M 1 + M 2 )×T0 dma + M 3 ×T0 rma + + (8)
i=1 B_DMA×µ i=1 B_RMA×µ
循环优化后的访问总开销如公式 (9) 所示:
[ ]
T opt = Block_num×T trans +ITERS× (Na1+ Na3)×Delay ldm + Na2× Delay sdm +T other (9)
相对的, 循环优化前的访问总开销如公式 (10) 所示:
[ ]
T noopt = ITERS× (Na1+ Na2)×Delay mem + Na3× Delay sdm +T other (10)