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 共享内存等待与核间同步相结合实现流程