粒子分解和域分解并行化算法的优缺点是什么?


15

我正在使用几个软件包(例如Gromacs和DL_POLY)运行分子动力学(MD)模拟。

Gromacs现在支持粒子分解和域分解算法。默认情况下,Gromacs模拟使用域分解,尽管直到最近,多年以来,粒子分解是Gromacs中唯一实现的方法。在Gromacs的一篇论文(DOI 10.1002 / jcc.20291)中,作者给出了最初选择粒子分解的原因:

“早期的设计决策是选择使用粒子分解而不是域分解来将工作分配到处理器上。在后一种情况下,将空间域分配给处理器,这使得仅通过本地通信即可快速找到空间邻居,但是会带来复杂性对于跨越空间边界的粒子而言,域分解是一个更好的选择,只有当线性系统的大小大大超出相互作用范围时,分子动力学中才很少发生这种情况,通过粒子分解,每个处理器都可以计算力和坐标/速度更新对于预先分配的粒子,使用预先计算的邻居列表均匀分布在处理器上。F一世Ĵ从颗粒之间的一对相互作用产生一世Ĵ,这是需要两种粒子的速度更新和 一世Ĵ,仅计算一次,并传达给其他处理器。每个处理器将系统的完整坐标集保留在其本地内存中,而不是将存储限制在所需的坐标范围内。这更简单并节省了通信开销,而内存要求通常根本不是限制因素,即使对于数百万个粒子也是如此。另一方面,可以包含多达1000倍粒子数量的邻居列表分布在处理器上。基本上,通信仅限于围绕处理器环的每个时间步发送一次坐标和力。这些选择随着时间的推移被证明是可靠的,并且很容易适用于现代处理器集群。”

句子“仅当线性系统的大小大大超过相互作用范围时,才是域选择是一个更好的选择,这在分子动力学中很少见”,它们是什么意思?从上面的段落中,我得到一种想法,即粒子分解的优点是不必处理跨域边界移动的粒子。相反,您只需要为每个处理器有足够的内存来存储整个系统配置即可。因此,粒子分解看起来非常有利,而域分解看起来非常不利。

我确信这是一个非常复杂的问题(可能是许多书籍的主题),但是基本上,如果粒子分解看起来如此有利,为什么有人需要使用域分解? 如果系统规模很大(使每个处理器都难以或不可能存储整个配置),则域分解是否有利?基于上面引用的段落,我不确定为什么最近刚将域分解作为Gromacs中的默认并行化算法。

似乎现在的DL_POLY(版本4)也使用域分解。从版本4手册中:

“以这种方式对配置数据进行划分是基于原子在模拟单元中的位置,系统数据的这种几何分配是DD算法的特点。请注意,为了使该策略有效地起作用,系统必须具有合理均匀的密度,以便为每个处理器分配几乎相等的原子数据部分(尽可能多),通过这种方法,在处理器和该方法在概念上很简单,尽管编程很麻烦,但在概念上却很简单,特别适合效率最高的大规模仿真。

...

在使用DD策略的情况下,SHAKE(RATTLE)算法比DL_POLY Classic的“复制数据”方法更简单,后者需要原子位置的全局更新(合并和剪接)。”

这听起来好像域分解是好的,因为它可能更有效,即使可能更难以实现。

另一方面,以前的版本(DL_POLY Classic)使用了复制数据并行化,这似乎是粒子分解的另一个名称。从该版本的手册中:

复制数据(RD)策略是在MD中实现并行化的几种方法之一。从配置数据的并行计算机中的每个节点(在复制其名称导出即阵列限定的原子坐标,速度 ,和力,对于全部[R一世v一世F一世ñ在模拟系统中的每个原子都在每个处理节点上重现。在这种策略中,大多数力的计算和运动方程的积分可以在节点之间轻松而平等地共享,并且在很大程度上可以在每个节点上独立进行处理。该方法编程相对简单并且相当有效。而且,它很容易在单个处理器上“崩溃”运行。但是,该策略在内存中可能很昂贵,并且具有较高的通信开销,但总的来说,它已被证明在各种应用程序中都是成功的。

该段似乎与该问题的第一段基本一致,不同之处在于它说复制的数据/粒子分解具有“高通信开销”。Gromacs论文的段落似乎相反-粒子分解是更可取的,因为它比域分解具有较低的通信开销。

你有什么想法吗?

Answers:


10

对于具有有限范围的相互作用的系统,粒子分解和区域分解与加速力计算的两种主要方法直接相关:Verlet邻居列表和单元链接列表。如果您想了解详细信息,可以从Allen和Tildesley那里读到一本不错的书,叫做《液体的计算机模拟》,许多人认为这是分子动力学和蒙特卡洛研究的“圣经”。然后是来自Griebel,Knapek和Zumbusch的分子动力学数值模拟,深入研究了并行执行MD的各种技术。

基本上,维雷特列表建立了给定半径内给定原子/分子(或一般而言,粒子)的所有邻居的列表。随后,当检查成对的原子以计算力时,请查阅该列表。一旦构建了列表,就可以明显看出哪些粒子与其他粒子接近,并且可以将它们分布在不同的处理器之间进行评估。由于仅花费来构建(检查所有可能的巴黎粒子,因此仅偶尔使用一些巧妙的技术来构建该列表,以使其保持最新状态。给定已经构造的列表,力评估为O N Øñ2Øñ

单元链接列表将空间划分为大小相等的单元,该单元大于交互作用电位的截止距离,然后将每个粒子放在与其所属的单元关联的列表中。此过程需要。然后,仅在同一单元格或其相邻单元格中搜索给定粒子的邻居。由于每个单元具有恒定数量的邻居(例如,在3-D情况下为26个),因此以O N 评估力。但是,这里的常数乘数可能足够大,以致于使该算法的扩展性不如Verlet列表方法。但是对于足够大的NØñØñ ñ它的伸缩性更好。因此,线性大小参数。域分解方法是单元链接列表方法的直接扩展-单元在不同的CPU之间划分。

域分解的问题在于,当粒子从一个单元移动到另一个单元(由另一个CPU处理)时,它必须进行通信。在较高的模拟温度下,当粒子倾向于移动到比其平衡位置更远的位置时,或者当粒子流动时,这可能会成为问题。同样,来自域边界上的单元的信息也必须在每次迭代中传输到相邻域。但是所有这些都是本地同步通信,可以非常有效地完成。

复制的数据是最简单的方法,但是不幸的是,它要求每一步的所有位置和速度信息都必须全局同步。这确实不能很好地扩展,对于非常大的系统,全局内存量是数据结构的大小乘以使用的CPU数量,而并行处理的目标之一是分发数据,以使每个CPU 占用更少的内存。而不是全球数据量。

总之,不存在适用于所有模拟系统的“一刀切”的方法。大多数时候,可以从系统几何结构中得出最佳并行化策略,并可以选择适合该情况的MD代码-毕竟,它们都或多或少地实现了相同的基础力场和积分器。


好答案!原子分布均匀是否常见?对于非均匀分布,它是否起作用?
fcruz 2012年

3
这取决于要模拟的系统。如果它是液体,气体或块状晶体,那么原子将更不均匀地分布。如果存在相或高度局部化的颗粒聚集体,则更少。对于非均匀分布,除非采用某些自适应方法,否则域分解的效率可能较低。
赫里斯托·伊利耶夫

2
Øñ2Øñ日志ñØ[RØñ

4

“只有当线性系统的大小大大超过相互作用范围时,才是域分解是一个更好的选择,这在分子动力学中很少见”,那篇(很旧的)GROMACS论文的作者表示,如果邻居列表的空间大小为大约1纳米的数量级,而模拟单元只有几纳米,那么进行区域分解的开销就太高了。您也可以接受粒子分解中的所有信息分发,而无需花时间进行所有域分解的簿记工作。

随着GROMACS实施,粒子分解的问题在于随着时间的流逝,分配给每个处理器的粒子会在空间中扩散。由于计算每个交互的责任由它们的初始位置确定,因此扩散逐渐增加了每个处理器为建立其邻居列表而需要知道的总空间量,即使邻居列表描述的总计算量是恒定的。实际上,您将定期重新启动仿真以重置数据和通信位置。

如果在模拟的时间范围内扩散很明显,则“粒子分解具有不必处理跨越域边界移动的粒子的优点”的假设就不成立。

域分解通过迁移对交互的责任以及扩散来解决这种“前期问题”,从而改善了每个处理器上的数据局部性,并最大程度地减少了通信量。

免责声明:我将帮助开发GROMACS,下周可能会淘汰粒子分解的实现;-)


0

我想补充Hristo Iliev的答案。尽管他的文章主要谈论计算复杂性,但在并行化方面,通信复杂性至少同等重要-并且它是域分解的主要原因。

现代并行机通常具有某种环形拓扑。这意味着每个CPU都有许多可以与其快速通信的“相邻” CPU。与不是邻居的CPU进行通信的成本更高。因此,始终只需要与相邻CPU通信的算法总是有利的。

PØP2

PØP

ØP

但是请注意,非均匀系统并不像听起来那样普遍,它们仅在真空中模拟某些事物或使用隐式溶剂时才会出现。晶体和液体的密度足够接近以进行畴分解。


这是一个很好的答案。我只是想增加一个精度。使用基于类似MD的算法的方法(例如离散元素方法)的颗粒流模拟通常会遇到以下情况:您的区域几乎没有颗粒,而其他区域充满了颗粒……
BlaB

相互作用伙伴随机分布当然不是粒子分解的要求。一个罐头并且通常应该从分解成空间紧凑的粒子组开始,因为它们将共享共同的相互作用邻居。最终,扩散将意味着分布变得随机。这就是为什么要定期重新启动上述GROMACS粒子分解模拟,以刷新分解位置的原因。
mabraham
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.