mpi4py:生成进程且父进程未退出,在调用comm时挂起执行。

时间:2019-04-29 23:30:03

标签: python-3.x openmpi spawn mpi4py

我正在测试一个需要矩阵乘法的代码,并且我想将此操作委托给另一个我从mpi4py的示例中修改的用于矩阵乘法的代码。产生给该脚本的代码是:

from mpi4py import MPI
import numpy as np
import sys

A = np.array([[1., 2.], [4., 5.], [7., 8.], [3., 6]])
B = np.array([[9., 8., 7.], [6., 5., 4.]])
C = np.zeros((A.shape[0], B.shape[1]))
comm = MPI.COMM_SELF.Spawn(sys.executable, args=['libraries/multiplication.py', str(A.shape[0]), str(A.shape[1]), str(B.shape[1])], maxprocs=3)
comm.Send(A, dest=0)
comm.Bcast(B, root=MPI.ROOT)
comm.Recv(C, source=0)
print(C)
comm.Disconnect()

该代码打印出矩阵乘积并且是正确的,没有显示任何错误消息,但是没有退出。我仅在父级传播者的multiplication.py上调用Disconnect。我正在与mpirun -n 1 python test.py

一起跑步

如果我在https://mpi4py.readthedocs.io/en/stable/tutorial.html上运行了计算PI示例,那么我也会遇到麻烦。 我在Ubuntu 16.04.6上,具有openmpi版本1.10.2。

0 个答案:

没有答案