我应该在调用 pdpotri() 之前设置障碍吗?

Should I place a barrier before calling pdpotri()?

我正在使用 pdpotrf() in order to perform the Cholesky decomposition. Then I want to call pdpotri(),以便反转矩阵。在 pdpotrf() 之后,每个进程都会调用该函数。我应该在那里设置障碍,以便我确定所有过程都已通过 Cholesky 分解完成,然后继续进行反演部分,还是不需要?

我用微小的输入写了一些例子,表明不需要它,但我想确定我不只是(不)幸运并且面临更大输入的问题。

请注意,我所说的障碍是指:MPI_Barrier(MPI_COMM_WORLD);


编辑

我只是担心反转可能会在其他进程终止 Cholesky 分解之前开始。 pdpotri() 会处理这个吗?我的意思是,它会检查并在需要时等待。还是 pdpotri() 只在其调用进程的子矩阵中起作用?如果是这样,那么就不需要障碍了。

虽然我没有查看 pdpotri()pdpotrf() 的细节,但我看到了两种情况:

1) 两个函数之间需要有一道屏障。然而,在这种情况下,因为 pdpotri() 必须始终在 pdpotrf() 之后,所以在 pdpotri().[= 的开头内置一个隐式边界是最有意义的。 16=]

2) 两个函数之间不需要隔阂

在任何一种情况下,您都没有必要使用 MPI_Barrier().

编写自己的显式屏障