python - 在 mpi (mpi4py) 中创建群组通讯器

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

最佳答案

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/

相关文章:

Python:并行 numpy memmap

linux - 受限设备上的 MPI 是 Linux 上进程间通信的良好选择吗?

python - 如何通过 cython 将 MPI 通信器从 python 传递到 C?

python - 对 recvbuf 进行操作的 MPI_Sendrecv?

openmpi - 使用 MPI4PY 快速失败

python - numpy 在另一个数组中创建最大连续对的数组

python - 是否有(已经)一种方法来比较 2 个模型实例,一个字段一个字段,看它们是否相等?

sum - 如何使用 MPI_Reduce 独立地对不同处理器组的不同值求和

python - 如何修复 'DataFrame' 对象没有属性 'coalesce'?

python - PyMC 最简单的线性模型