MPI_COMM_WORLD不恒定吗?

时间:2019-03-01 08:43:37

标签: c parallel-processing mpi communicator

我读了here

  

虽然MPI_Comm_split是最常见的通信器创建   功能,还有很多其他功能。 MPI_Comm_dup是最基本的   创建一个传播者的副本。那里似乎很奇怪   将存在一个仅创建副本的函数,但这非常   对于使用库执行特定操作的应用程序很有用   函数,例如数学库。在这些   应用程序,请务必不要使用用户代码和库代码   互相干扰。为了避免这种情况,第一件事   应用程序应该做的就是创建MPI_COMM_WORLD的副本,   这样可以避免其他图书馆也使用   MPI_COMM_WORLD。库本身也应该复制   MPI_COMM_WORLD来避免出现同样的问题。

开始初始化MPI后可以更改MPI_COMM_WORLD吗? MPI_COMM_WORLD不恒定吗?

1 个答案:

答案 0 :(得分:2)

MPI_Comm_dup(MPI_COMM_WORLD, ...)的基本原理是您不希望库在后台接收MPI应用程序(在MPI_COMM_WORLD中发送的消息)。相反,您不希望MPI应用接收库发送的消息。

避免这种情况的一种简单方法是为该库使用专用的通信器,而复制MPI_COMM_WORLD是实现此目的的最简单方法。

您的问题的答案是MPI_COMM_WORLDMPI_Init()之后不能更改。而且更普遍的是,沟通者一旦创建便无法更改。