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

时间:2015-07-15 20:26:06

标签: c++ mpi distributed-computing intel-mkl scalapack

我正在使用pdpotrf()来执行Cholesky分解。然后我想调用pdpotri(),以便反转矩阵。在pdpotrf()之后,每个进程都会调用该函数。我应该在那里设置一个障碍,以便我确信所有过程都是通过Cholesky分解完成的,然后转到反转部分,或者不需要它?

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

请注意,屏障是指:MPI_Barrier(MPI_COMM_WORLD);

修改

我只是担心在其他一些进程终止Cholesky分解之前可能会开始反转。 pdpotri()会照顾到这个吗?我的意思是,如果需要,它会检查并等待。或pdpotri()仅在其调用过程的子矩阵中起作用?如果是这样,则不需要障碍。

1 个答案:

答案 0 :(得分:2)

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

1)两个功能之间需要有障碍。但是,在这种情况下,由于pdpotri()必须始终位于pdpotrf()之后,因此在pdpotri()的开头内置隐式边界最有意义。

2)两个功能之间不需要有障碍。

在任何一种情况下,您都没有必要使用MPI_Barrier()编写自己的显式屏障。