在 mpi (mpi4py) 中创建组通信器

Create group communicator in mpi (mpi4py)

我正在尝试使用 mpi4py 创建一个 MPI 组。我目前的尝试是这样的:

from mpi4py import MPI

comm = MPI.COMM_WORLD
newGroup = comm.group.Excl([0, 1, 2])
print newGroup.size

newComm = comm.Create_group(newGroup)
print newComm
print newComm.Get_size()

newGroup.size 调用执行 return 2(我用 5 个进程启动应用程序)并且 newComm 变量指示是一个通信器。但是一旦我尝试调用 Get_size 就会抛出异常:

mpi4py.MPI.Exception: MPI_ERR_COMM: 无效的通讯器

如何根据预定义的进程 ID 序列创建新的通信器?

newComm 在任务 [3-4] 上是合法的沟通者,但在任务 [0-2] 上是 MPI_COMM_NULL。该标准不允许您调用 MPI_Comm_size(MPI_COMM_NULL, ...),因此您的错误。

解决方案是在任务 [3-4]newComm 而非 [=12= 的任何任务上显式调用 newComm.Get_size() ].