论文部分内容阅读
分子动力学模拟是一种对原子和分子的物理运动进行计算机模拟的方法,随着分子动力学模拟方法的不断改进和完善,其功能越来越丰富,模拟的分子体系规模和时间长度也一直在增长。然而,大规模原子体系进行微秒级的分子动力学模拟需要耗费大量的计算资源和时间,当前现有的服务器和分子动力学模拟算法已经无法及时有效的处理如此大规模的动力学模拟任务。本课题就是针对上述问题,根据天河2号超算系统上的大规模CPU-MIC微异构体系结构,对最常用的分子动力学模拟软件Assisted Model Building with Energy Refinement(AMBER)进行并行算法设计和优化加速研究。在保证结果正确的前提下,在不同层次上和规模上对AMBER进行深度并行优化,主要研究工作如下:首先,针对AMBER软件包的sander程序,在CPU上对其进行细粒度的并行优化。sander作为AMBER软件包的模拟器程序,是分子动力学模拟的核心。针对sander程序热点部分,提出了去除循环依赖、改进数据结构等手段,基于OpenMP编程技术,实现了对分子动力学模拟程序AMBER-sander细粒度并行优化加速。我们还利用MIC(Many Integrated Cores)协处理器Intel Xeon Phi超强的并行计算能力,将AMBER-sander的核心计算任务移植到MIC上,首次实现了基于MIC的分子动力学模拟程序AMBER-sander的并行加速。相比原来的AMBER-sander程序,基于MIC的sander-mic获得了3-4倍的加速。其次,为了充分利用CPU与MIC的计算资源,我们设计和实现了面向天河2号的CPU与MIC微异构协同的分子动力学模拟并行优化算法。提出了内存管理优化、数据传输优化、通信延迟隐藏、向量化以及负载均横等多种并行优化方法,在单节点上,对分子动力学模拟软件AMBER-sander实现了5-6倍的加速,把单CPU单MIC协同并行加速扩展到面向天河2号的单节点多CPU多MIC卡的协同并行。最后,通过对AMBER-sander的可扩展性进行分析,在多节点层面对其进行并行加速。对于分子动力学模拟算法本身而言,由于迭代次数多,每次迭代都需要进行数据规约和数据分发,通信开销成为多节点并行加速的一个主要问题和瓶颈。我们在保证计算结果的误差在一定范围内,对算法进行了跨节点并行优化,由原来的每一次迭代都要进行数据规约操作,变成每隔固定次迭代再进行数据规约操作,使得通信开销大大减少,程序可以在天河2号多个节点上高效地运行,全面提高了程序的并行可扩展性。总之,本文基于天河2号,通过在以上3个层面上对分子动力学模拟软件AMBER-sander进行并行优化加速,从单CPU上的细粒度OpenMP并行、单节点CPU与MIC协同的并行优以及多节点多MIC卡的协同并行,相比原来的程序都有不同程度的加速,最高的加速比达到5-6倍。