论文部分内容阅读
粒子系统中包含了大量相互作用的粒子。粒子方法是进行粒子系统模拟的许多具体方法的统称,它们通过动力学计算描述每个粒子的行为,从而直接或通过统计与组合复现系统的行为。粒子方法涵盖了物理系统微观、介观和宏观的不同尺度,是一类直观而且普遍适用的模拟方法。并行计算是解决粒子方法巨大计算量的自然选择。为了方便地模拟大规模的粒子系统,本文针对粒子间作用属于可叠加近程作用的粒子系统,通过研究该类系统的特点,设计了适用于分子动力学、拟颗粒模型、光滑粒子动力学和耗散粒子动力学四种粒子方法的并行计算框架。
并行计算框架的结构分为三个层次,最下面一层是计算中使用的各种库函数和具体的数据结构;中间一层是适用于四种粒子方法的并行算法;最上面一层则是各种具体的粒子方法,它们属于应用层。计算框架使用了消息传递模型作为并行编程模型。本文研究拟定了并行计算框架中主要的并行算法:利用扩展性好的区域分解算法分解计算任务,采用元胞列表方法作为计算粒子之间作用时搜索相邻粒子的方法,处理器之间通过单向传递和双向传递两种方式实现边界粒子的交换。为了解决并行计算中可能出现的负载不均衡问题,应用RCB(RecursiveCoordinateBisection)算法来动态地根据各处理器上的负载量划分计算区域,同时还改进了标准的Shift通信模式,使之可以满足动态区域划分后处理器之间的通信要求。
针对粒子方法的特点和应用需求,在计算框架的设计中,引入面向对象的设计方法,把并行计算中的处理器抽象为粒子容器,采用C++的模板技术,设计了框架中的基本数据结构,实现了计算和通信过程的封装。在此基础上,结合上述四种粒子方法的计算特点,通过继承和派生机制分别实现了它们的容器模板类。通过在硬件平台上应用计算框架对四种方法分别进行实例计算考察了框架的性能。虽然由于四种方法各自不同的算法特点使得计算性能有所差异,总的说来,应用该计算框架可以比较方便地实现这四种粒子方法的并行计算,在一定程度上实现了通用化,并且具有较高的并行效率和良好的扩展性。