python-3.x - mpi4py:生成进程和父进程未退出,在调用 comm.Disconnect 时挂起执行
问题描述
我正在测试一个需要矩阵乘法的代码,我想将此操作委托给我从 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()
该代码打印矩阵产品并且是正确的,不显示任何错误消息,但不退出。我Disconnect
只在父通信器上调用 multiplication.py。我正在运行mpirun -n 1 python test.py
如果我在https://mpi4py.readthedocs.io/en/stable/tutorial.html上运行计算 PI 示例,我也会遇到问题。我在 Ubuntu 16.04.6 上,有 openmpi 版本 1.10.2。
解决方案
推荐阅读
- r - 如何使用 purrr 根据另一列中的值提取列表列中的元素
- javascript - Bootstrap - 滚动时带有动态内容的粘性导航栏、粘性侧边栏(左右)
- sql - 列被多次指定
- r - Selectinput 和 Action 按钮没有按预期工作,只有一个在闪亮的地块
- c - 为什么 x 打印字符串的大小?
- angular - *ngFor 在自定义模板中未定义,在 ul > li 中定义/工作
- javascript - 如何在烧瓶应用程序的选择框中对 onchange 事件运行 ajax 请求
- linux - 将具有依赖关系的 Perl 脚本从一台计算机移动到另一台计算机
- maven - 部署相同版本的 Jar
- clojure - Clojure 中的简单二维数组