外延表面生长与数值树代码并行化的数据依赖分析
1. 外延表面生长模拟
在模拟原子扩散过程中的原子相互作用时,我们面临着诸多挑战和需要解决的问题。为了实现这一模拟,我们采用了多种策略和数据结构。
1.1 并行化策略
- 域分解方法 :存在多种域分解方法,其中包括复制策略。在复制策略中,所有从进程都从主进程复制图像,主进程和从进程共享表示表面的数据结构。这样,从进程在计算原子的结合能时无需了解集群中其他节点的计算结果。然而,该策略的主要缺点是所有从进程都需要在其内存中存储表面图像。
- 队列结构的使用 :为了模拟原子相互作用,我们使用了队列结构。队列结构由主进程管理的双数据数组组成,每个队列项包含两个数据结构,每个结构包含两个坐标来标识图像中一个原子的位置,这两个点表示原子在扩散过程中的移动。此外,队列结构还包含一个计数器,用于调整每个进程的任务,使我们无需考虑集群中每个节点的处理速度。
1.2 随机数生成测试
为了证明蒙特卡罗方法在随机数生成方面是完全解耦的,我们使用SPRNG库进行了多次随机数生成测试。结果表明,使用该库和不使用该库之间没有可测量的差异,主要差异在于执行时间。因此,我们选择了计算成本较低的简单随机数生成算法。
1.3 结果分析
- 解决方案选择 :通过分析域分解的结果,我们选择了纯复制解决方案,因为从优化和处理速度的角度来看,它最适合原子相互作用问题,并且可以最小化主进程和从进程之间的通信。 <
超级会员免费看
订阅专栏 解锁全文
3039

被折叠的 条评论
为什么被折叠?



