在 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()
].
我正在尝试使用 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()
].