我正在尝试使用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
调用确实返回 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
所在的任务上显式调用 newComm.Get_size()
不 MPI_COMM_NULL
。
关于python - 在 mpi (mpi4py) 中创建群组通讯器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53402294/