论文部分内容阅读
随着高性能计算机的快速发展和计算资源的日益丰富,高性能计算已成为当今国内外研究的热点。由于高性能计算机的主流结构已从大规模并行处理机转向多核集群,系统也从单一内存模型转向混合内存模型,为高性能计算机所设计的并行程序必须适应这一转变,从而产生了混合并行编程模型。分子动力学(Molecular Dynamics,MD)模拟作为一种重要的科学研究方法,在多个学科领域里得到了广泛地应用。进一步加快MD模拟在多核集群上的计算速度,促进这些领域的科研工作进一步发展就变得非常紧迫。然而,当人们在设计多核集群上的基于混合并行编程模型的并行MD算法以及其它并行算法时,普遍遇到引入多线程并行时开销过高的问题,使混合模型常常不如原来的纯消息传递模型。因此,如何解决这类问题,提高科学与工程计算程序在多核集群上的计算速度,是当前研究的一个重要方向。本文全面系统地研究混合并行编程模型、混合并行MD算法的研究现状和存在的不足,在此基础上提出了一系列相关问题的优化或改进算法。本文的主要内容及创新点如下:(1)本文深入地分析了适用于多核集群的混合并行编程模型、并行MD算法的基本原理和基本实现方法,为后面提出的多核集群上的混合并行MD算法打下了基础。(2)本文论证了Critical Section算法进行多线程并行MD计算的可扩展性问题,理论分析和实验结果表明,Critical Section算法在处理器核心数量大于8时的加速比明显下降。本文进而提出了一个称为三角形并行MD算法的优化方法,该方法通过静态分配原子集的策略让各线程在不同的时刻进入临界区,从而减少临界区的闲置时间,加快并行计算速度。(3)本文提出了基于OpenMP的并行MD算法——SPMD-like(Single ProgramMultiple Data)算法。该算法采用与SPMD程序相同的各自处理数据并冗余计算跨区域数据关系的策略,但是在实现上却接近简单的OpenMP实现,不需要修改MD的内部计算逻辑,只需要修改几个数据结构并添加一个空间分解子程序。该算法在保持OpenMP实现简单特点的同时取得接近纯消息模型的并行计算性能和可扩展性。(4)本文提出了一种多核集群上的基于混合MPI/OpenMP模型的并行MD算法。该算法在保持尽量小修改原则的基础上,将SPMD-like算法嵌入纯MPI并行MD程序中。该混合并行程序在节点内采用OpenMP并行,在引入较小并行开销的同时,明显地减少了节点间的通信时间,从而有效地提高了MD程序在多核集群上的计算速度和并行效率。(5)本文提出了一种完全避免临界区的归约算法——分块轮换归约算法,该算法在保持与Critical Section算法相似的简单性的同时,具有比Critical Section算法更好的并行性能和可扩展性。理论分析和实验测试证明该算法在节点内处理器核数为16时并行性能较好,但是达到32以及更大时,它的性能不如SPMD-like算法。因此它和SPMD-like算法分别适合于不同的混合并行场合:节点内处理器核数量不多时,可选择实现较简单的分块轮换归约法;处理器核数量较多时可采用性能更好的SPMD-like算法。(6)本文提出了一种基于混合MPI/TBB模型的并行MD算法,并以LAMMPS为例进行了它的实现研究。实验测试结果表明,当多核集群中参与计算的节点数增加到一定程度后,混合模型可以获得比纯MPI模型更好的并行性能,且主要原因是通信时间的减少。