论文部分内容阅读
生物、化学、材料和医药科学的不断发展推动了人类认识和了解微观世界的需求大大增加,但是在分子、原子、原子团尺度上进行观测的成本仍旧高昂,尤其是对于微观过程的连续观测需要更加复杂精密的仪器,同时,一部分微观过程的时间尺度非常小,使得在实验室中捕捉这些微观过程十分困难。因此,使用计算机进行微观层面的模拟对认识和了解微观世界显得尤为重要。使用计算机模拟微观世界的主要方法包括第一性原理模拟、分子动力学模拟、蒙特卡洛模拟等。其中分子动力学模拟是最为常用的一种方法。随着分子动力学在科学研究领域中的应用越来越广泛,对分子动力学模拟效率的需求也不断增加,这主要是因为分子动力学模拟中的时间尺度和空间尺度的不断增长。为了满足这样的需求,分子动力学模拟在应用中不断利用新的计算机技术和计算硬件来提高效率,例如使用SIMD、异构众核、定制芯片和大规模并行等方法。2016年发布的神威·太湖之光超级计算机采用了 40960个SW26010处理器,实现了 125 PFlops/s的理论浮点性能,是中国第一台使用国产处理器登顶Top500榜单的超级计算机。由于其采用的SW26010处理器在架构上有巨大的革新,在实现了极高的运算速度的同时也有很好的能耗比,但这些架构变化也带来了内存模型和编程模型的巨大变动,使得原有的科学计算软件难以有效利用神威·太湖之光杰出的运算能力。虽然SW26010处理器采用的主核和从核异构并行的模式已经见于配备了 GPU、MIC等加速器的计算平台中,但是SW26010的节点没有GDDR或HBM等居于主存和加速器间的高速中间内存。SW26010处理器采用了从主存到从核片上缓存直接传输数据方式,这要求我们重新为算法设计内存访问模式。同时,从核的片上缓存不是常见的自动Cache,而是64KiB的LDM,数据的装入和写回由从核通过对应的指令发起,这给应用程序对从核的使用带来了新的机遇和挑战:一方面需要对应用进行很大的改造才能使之适应这种由软件控制缓存的模型,另一方面这也提供了更好的机会来控制数据的换入换出,实现对LDM的高效利用。目前,在神威·太湖之光超级计算机上开展分子动力学算法优化的研究存在的主要挑战有:1)分子动力学应用中需要进行大量的离散访存的情况,而SW26010处理器使用DMA访问主存的带宽太低,这种硬件架构和算法的不匹配使得分子动力学模拟在SW26010处理器上取得较为理想的性能非常困难。2)SW26010处理器的从核不能单独启动进程,分子动力学应用中常见的多进程并行框架无法有效利用从核,而分子动力学应用中现存的多线程并行框架往往是为了在超线程处理器上利用逻辑线程而设计的,与SW26010中使用多线程方式来利用物理计算核心的架构也不匹配。3)因为分子动力学是离散访存的应用,在多线程计算中,不可避免的会面临写冲突的问题,对于在SW26010上处理写冲突的问题,可以借鉴的经验比较少。4)分子动力学的计算部分非常复杂,一方面是除平方根这类耗时的数学计算,另一方面是在键角、扭转角和键级计算中需要的超越函数的计算量也很大,所以进行高效的向量化也是需要处理的问题。为了解决以上挑战,基于分子动力学模拟算法和神威·太湖之光超级计算机体系结构上的特点,本文针对分子动力学模拟过程中的数据读取、计算、数据更新和邻域索引等关键环节设计了相应的优化方案并开展了深层算法优化。此外,针对通用的算法优化环节,本文还设计并实现了面向神威平台的通用模块,这些模块不仅能够为分子动力学模拟算法的优化提供极大便利,而且还能很好的应用于面向神威平台的其它算法的优化和快速实现。具体来说,本文的主要贡献如下:1.设计了简洁高效的软件Cache策略以及深入优化的无表方法来解决SW26010处理器在分子动力学模拟的势函数计算中离散读取的问题。文中根据AMAT访存模型对软件Cache的设计中主要的性能指标进行了取舍,完成了高效的软件Cache实现。另外,根据SW26010处理器的特性,尝试了利用无邻接表方法来完成原子数据的离散读取。两种方法在实验中都可以匹配SW26010处理器的DMA机制并且充分利用SW26010处理器的内存带宽。2.设计了单端更新、混合更新和自适应更新框架来解决分子动力学模拟的势函数计算中离散更新和并行更新冲突的问题。单端更新采用计算换访存的方式来规避并行更新冲突,混合更新的方式将计算和更新分离,实现了计算并行化而更新串行化的模式,在不额外引入计算量的情况下实现了主从协同的高效更新方式。自适应更新框架使用观察者-执行者模式来完成低成本的副本归约机制,实现了无冲突的高效更新。三种框架适用于不同类型的势函数,都实现了对SW26010处理器内存带宽的有效利用。3.设计了基于向量混洗、参数剖面和无查表数学函数的向量化方式来提高势函数计算中的计算效率,同时引入了向量短路机制和格点-粒子截断过滤器来规避势函数计算中不必要计算部分。基于向量混洗、参数剖面、向量短路和无查找表数学函数的实现使得在本文对应的实现可以在向量化过程中应对分子动力学模拟中各种复杂的运算。向量短路机制和格点-粒子截断过滤器可以将模拟中的计算负载降低三分之一以上。4.设计了聚合扫描的邻接表构造方法和增量格点索引构造算法来加速分子动力学模拟中邻域索引的构造。聚合扫描的方法通过循环重构、访存聚合的方式来增大访存块,提高基于从核的邻接表构造中的数据复用率。增量格点索引索引构造算法充分利用了分子动力学中粒子运动连续的特性来提高算法中的访存局部性,从而在根源上规避分子动力学的邻域索引构造中全局随机访存的问题,实现了对格点索引构造非常有效的加速。5.设计了软件Cache库SWCache、无表的向量化数学函数库、性能采样库LWPF、调试库Libspc等工具来解决神威.太湖之光软件生态不完善的问题。这些工具不仅加速了本文研究的过程,也对其他基于神威·太湖之光的研究有所帮助,其中SWCache和LWPF在SW26010的从核编译器没有C++支持的情况下采用的封装模式也对未来基于SW26010和神威系列超级计算机的应用开发有借鉴价值。本文在神威·太湖之光上,利用已有的分子动力学软件LAMMPS和AM-BER,以及 自主编写的分子动力学软件 ESMD 对本文中设计的优化方法进行了测试和验证。在测试中,本文中的设计与实现在SW26010处理器上可以接近或超出同代商用处理器的性能,并且在大规模扩展中实现了 16384节点上对2 750亿原子的模拟,并达到2.43 PFlops每秒的持续浮点性能。