我有一个用于动力学的 Fortran 程序(基本上是一个 verlet 算法)。为了更快地计算速度,我将算法与 MPI 并行化。让我紧张的是,如果我有四个处理器,每个处理器都运行一个 Verlet,当它们达到并行化点时,它们会共享信息。然而,由于微小的数值差异(例如,在每个节点上编译的 LAPACK 中),从长远来看,每个 Verlet 轨迹可能会朝着完全不同的方向发展,这意味着在共享点我将获得来自不同的信息的混合轨迹。因此,我决定在每个时间步同步信息以防止分歧,但这显然引入了一个障碍。
这个问题(节点的分歧)通常是如何解决的?有什么参考吗?