基于OpenACC的太湖之光硅晶体加速分子动力学模拟 2020
摘要:以SW26010异构多核处理器和扩展的编程模型,使用多体势(Tersoff)执行固体共价晶体的分子动力学(MD)模拟。
Amdahl定律:当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
实现两种主要的优化:包括设计软件缓存和在编译器生成的中间版本代码上,设计软件缓存并最小化主内存的访问频率。
结合SW26010的特点,对传统的Amdahl定律进行了扩展。
总之,本文做出了以下三点贡献:
(1)本文在扩展的Amdahl定律指导下,首次利用神威OpenACC成功地将硅晶体的MD仿真连接到太湖之光上。
(2) 为了充分发挥新型异构多核处理器SW26010的优势,本文提出了基于中间代码的手工优化方法,如设计软件缓存等。实验结果表明,该优化方法对提高太湖之光硅晶体MD仿真的性能有显著的效果。
(3) 为了减少超越数学函数的离散内存访问,我们实现了自定义的超越函数。
第五部分:应用程序的并行移植解决方案
5.1 并行原理
在第2节和第3节中,我们分别讨论了SW26010的结构和硅晶体应用的特点。针对SW26010的硬件条件,本文主要利用扩展的Amdahl定律的三个指导原则对硅晶体的MD仿真应用进行优化。
(1)根据扩展的Amdahl定律,可以通过降低T comp来提高性能。TP能量计算模块作为硅晶体MD模拟的热点部分,实际上是一个计算密集型的过程。在SW26010的每个CG中,MPE负责分配、通信和计算任务,而cpe主要执行计算任务。MPE的峰值性能为23.2 GFLOPS, cpe的峰值性能为742.4GFLOPS。为了获得良好的性能,需要充分利用cpe的性能。根据扩展的Amdahl定律的第二指导原则,当负载不平衡时,采用cpe中最长的执行时间进行T comp。因此,为了获得最大的并行加速,我们需要将计算任务尽可能均匀地分配到每个CPE上。
(2) 根据扩展的Amdahl定律,可以通过降低T mem来进一步提高性能。为了减少内存容量,需要通过数据管理充分利用内存带宽,并尽量减少随机数据访问。
(3)在力计算过程中,尽量避免原子操作,因为原子操作的开销很大。
5.2 数据结构重建
5.3 数据预排序
一种简单的硅晶体应用并行化方案,通过粒子数将整个工作负载均匀地分配给所有CPE。对于SW26010,由于CG中的MPE和CPE共享相同的内存空间,因此CPE可以通过gload请求直接从主存访问所需的数据。在方便的同时,使用这种简单的方法从主存访问数据的长延迟会严重降低性能。如果我们想充分利用CPE的性能,就需要使用CPE的SPM。然而,每个CPE中的SPM容量只有64KB,因此需要通过DMA请求多次从主存获取数据。如果相邻粒子具有较大的存储跨度,则CPE将增加访问主存的频率并降低操作效率。根据原理2,为了提高数据访问的空间局部性,本文进行了数据预排序。
结合硅晶体的空间结构和分类数据的分析,我们发现有序粒子的相邻粒子具有高度的重合度,可以大大提高相邻粒子的命中率。数据预定后,每个CPE访问的主粒子和邻居粒子数据可以通过DMA方式有效传输。只要能得到主粒子和四个相邻粒子的数据,就可以进行计算。在完成当前粒子的计算后,下一个主粒子的所有邻近粒子都已经在LDM中了。提高了邻居粒子数据的重用性。
取模拟空间中的131,072个粒子,我们发现模拟空间中的粒子分布在128个平面上,每个平面经过数据预定后粒子数为1024个。考虑周期边界,本文发现每个平面上粒子的所有邻域都分散在其前后平面上,如图4所示。