2013-10-08 80 views
1

我最近开始在MPI(C语言)编程,我遇到了一种情况,在我创建的所有n进程中,我需要一个进程来显式等待另一个过程。 我已经通过了MPI_Barrier和MPI_Wait,但仍不确定它是如何工作的。提前致谢。如何使一个进程等待另一个进程

+0

你能描述你为什么认为需要等待吗?你很可能不需要那样做。 – Adam

+0

是的,我有一个矩阵,我正在为它的每个反对角线创建一个过程。在n * n矩阵中,我将有2n-1反对角线(这是进程的数量)。情况是,一个进程必须等待前一个进程执行,因为它需要来自该进程的数据。所以在这种情况下,我不得不引入一个等待,以确保我不以旧值操作。 –

+0

一个'n * n'矩阵有'n'个反对角元素。 – Adam

回答

2

如果您明确期望您希望等待的进程中的数据,只需拨打MPI_Recv并将源进程命名为sender参数,并且接收呼叫将阻塞,直到数据发送给它。

正如@Adam对您的问题所做的深入评论所指出的,您所描述的内容可能是完全顺序的算法,这在MPI程序中会是一个相当不幸的结果。

+1

@Ajinkya“阻塞到”意味着“等待”。 – Adam

+0

是的,我会尝试使用MPI_Recv。对于我的情况来说,它似乎比MPI_WAIT更好。谢谢 –

相关问题