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)
   77   78   79   80   81   82   83   84   85   86   87