我应该在调用 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()
.
编写自己的显式屏障
我正在使用 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()
.