繁体   English   中英

在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调用确实返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM