2012-07-03 61 views
0

[MPI-C++]广播消息退出(MPI)

我提出,在特定条件下它应关闭中的所有进程的应用程序的应用程序。 我试图使用root进程,但我想发送消息到所有其他进程也终止。我怎样才能做到这一点?

回答

1

无法退出MPI应用程序干净所有进程没有通信。这意味着,如果您的条件只发生在MPI应用程序的一部分进程中(例如,您在其中一个进程中出现错误),则单方面退出应用程序的唯一方法是致电MPI_Abort。这将导致所有MPI流程突然结束,无论当时每个级别的代码在哪里。由于MPI_Abort不是一项集体例行公事,所以不可能对任何其他职级进行清理。

如果您希望有一个干净的退出,您需要定期在所有级别之间进行沟通,无论所有级别的所有工作是否仍在进行,或者是否应该退出。例如,您可以定期致电MPI_Allreduce并以MPI_SUM作为操作。如果您的退出条件在某个过程中得到满足,请发送1作为数据,否则请发送0。现在只需在MPI_Allreduce之后检查总和是否大于0,如果是,请按顺序退出应用程序。