论文部分内容阅读
粒子方法是研究复杂微观物理问题的一种有效新途径,计算机模拟是实现粒子方法的一个重要手段。它首先用各种粒子化方法将不同的研究对象离散成具有特定物理意义的粒子,再由计算机跟踪这些粒子的运动轨迹并分析它们的运动规律,从而得到对研究对象的认识。目前,大规模并行计算是解决粒子模拟中计算量巨大的有效选择。本论文在研究了近程作用粒子模拟并行计算中已有进程间通信方式和负载平衡方法的基础上,用主流的面向对象语言C++,研究、实现了一种比Shift更加通用的并行通信模式All2All和泛化的动态负载平衡模块,并研究、设计了并行粒子模拟的任务自动划分模块,为大规模粒子模拟通用软件平台的推广和应用奠定了基础。本论文实现的泛化并行通信模式All2All和能自动生成处理代码的动态负载模块可以方便地移植到其它高性能计算问题中。
本论文完成的工作主要有:
(1)研究、设计了并行粒子模拟系统的任务自动划分模块,并设计了控制台下人机交互系统,为远程上机的用户提供便利。
(2)研究了单一粒子时的All2All并行通信模式和多种粒子时处理代码自动生成的泛型化。单一粒子的实现中采用非阻塞通信方式,可以充分利用CPU的空闲资源。在多种粒子的实现中,使用Loki库设计针对多种粒子的代码自动化生成模块。All2All通信模式可以实现并行粒子模拟中碰到的复杂区域划分下进程间通信,解决了Shift并行通信模式在不规则计算区域下不能胜任的问题。
(3)研究实现了粒子模拟并行计算的主从模式动态负载平衡模块,可以对计算负载进行动态的监控和调整,提高了计算的效率,完善了平台的功能。使用Loki库对其进行泛型实现,用以解决更加复杂体系的代码自动生成的处理。
在本文中共使用两个模拟实例对本论文实现的任务自动划分模块、动态负载平衡模块以及All2All并行通信模式与动态负载平衡模块的集成进行了初步检验,结果表明本文提供的各个模块结构合理,代码实现正确并且具有良好的可复用性。All2All通信模式和动态负载平衡模块具有较高的并行效率和良好的可扩展性,为进一步开发不同需求的粒子模拟并行程序提供了较好的基础,可以减少未来粒子并行模拟系统进一步功能扩展的难度和缩短开发周期。