[英]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
调用确实返回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
不是 MPI_COMM_NULL
任何任务上显式调用newComm.Get_size()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.