我读了here,
虽然MPI_Comm_split是最常见的通信器创建 功能,还有很多其他功能。 MPI_Comm_dup是最基本的 创建一个传播者的副本。那里似乎很奇怪 将存在一个仅创建副本的函数,但这非常 对于使用库执行特定操作的应用程序很有用 函数,例如数学库。在这些 应用程序,请务必不要使用用户代码和库代码 互相干扰。为了避免这种情况,第一件事 应用程序应该做的就是创建MPI_COMM_WORLD的副本, 这样可以避免其他图书馆也使用 MPI_COMM_WORLD。库本身也应该复制 MPI_COMM_WORLD来避免出现同样的问题。
开始初始化MPI后可以更改MPI_COMM_WORLD吗? MPI_COMM_WORLD不恒定吗?
答案 0 :(得分:2)
MPI_Comm_dup(MPI_COMM_WORLD, ...)
的基本原理是您不希望库在后台接收MPI应用程序(在MPI_COMM_WORLD
中发送的消息)。相反,您不希望MPI应用接收库发送的消息。
避免这种情况的一种简单方法是为该库使用专用的通信器,而复制MPI_COMM_WORLD
是实现此目的的最简单方法。
您的问题的答案是MPI_COMM_WORLD
在MPI_Init()
之后不能更改。而且更普遍的是,沟通者一旦创建便无法更改。