Page 327 - 《软件学报》2021年第9期
P. 327

田卓  等:神威太湖之光上分子动力学模拟的性能优化                                                        2951


         来了挑战.那么,如何优化访存延迟?
             申威处理器上内存总大小为 32GB,每个核组通过内存控制器与 8GB 的本核组内存相连,如图 7 所示,不同
         核组之间如需同步,需要访问片外存储器.那么,多核组之间共享内存空间在内存分配上将带来一定的性能损
         失 [16] .该部分的性能损失在本文的优化算法中,采用节点共享变量的方式规避.多核组间通过检测节点共享变量
         实现同步,而非显式同步的方式优化访存延迟.在节点主进程上设置节点共享变量,不同核组间通过共享变量以
         获取所有核组间的同步状态,以此规避了对大内存的频繁访问而带来的访存延迟.
                     //主核代码
                     1: for iter=0 to NITERS do
                     2:    sync(NODE)   //节点同步               //从核代码
                     3:    sync(ARRAY)   //主从核同步             1: for iter=0 to NITERS do
                     4:    sync(NODE)   //从主核同步              2:    sync(ARRAY)   //主从核同步
                     5:    sync(ARRAY)   //节点同步              3:    computing(⋅)   //从核计算
                     6:    if (ID==0)                        4:    sync(ARRAY)   //从主核同步
                     7:      exchange(⋅)   //通信              5: end for
                     8:    end if
                     9: end for
             Fig.9    Code on MPE for node-sync algorithm            Fig.10    Code on CPEs for node-sync algorithm
                   图 9   片上同步的主核代码                               图 10   片上同步的从核代码

         2.1.2    共享内存等待与核间同步相结合,优化访存延迟
             神威处理器主从核异构的体系结构特点,导致主从核之间的同步需要通过访问片外存储器实现.多核访存
         需要经过访存队列,这种同步方式较慢,带来访存延迟.可见,片上同步的主要瓶颈在于同步需访存.神威体系结
         构下,主核间同步可通过节点共享变量实现,单个核组的从核间同步速度较快,无需访存.那么,如何实现所有主
         从核间的快速同步?我们采用共享内存等待与核间同步相结合的方式,具体做法如图 11 所示.
                             节点

                            0号主核
                                       0       0       0      0
                                         CPE0   CPE1    CPE2   CPE3      从核0等待
                                                                        通信完成变量

                                                CPE1    CPE2   CPE3      从核同步
                                        ...  ...  ...


                                      CPE0计算  CPE1计算 CPE2计算   CPE3计算     从核计算

                                                                         从核同步
                                        ...  ...  ...  CPE1  CPE2  CPE3
                                                CPE1
                                       0
                                        CPE0    CPE1   CPE2    CPE3      从核0修改
                                                                        计算完成变量
                           主核0等待
                          计算完成信号
                           主核0通信

                           主核0修改
                          通信完成变量
                    Fig.11    Process of combining shared memory waiting with inter-core synchronization
                                 图 11   共享内存等待与核间同步相结合实现流程
   322   323   324   325   326   327   328   329   330   331   332