在MPI中创建组通信器(MPI4PY)

时间:2018-11-20 22:05:43

标签: python 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序列创建新的通信器?

1 个答案:

答案 0 :(得分:1)

newComm是任务[3-4]的合法交流者,但MPI_COMM_NULL是任务[0-2]的合法沟通者。该标准不允许您调用MPI_Comm_size(MPI_COMM_NULL, ...),从而导致您的错误。

解决方案是在任务newComm.Get_size()上或在[3-4]不是不是 newComm的任何任务上显式调用MPI_COMM_NULL