【发布时间】:2020-05-20 10:38:52
【问题描述】:
似乎导入 h5py 会阻止使用 subprocess 运行 mpi 任务。
考虑以下代码:
#!/usr/bin/python3
#import h5py
import subprocess
result=subprocess.run(['mpirun','-np','2','uptime'],shell=False)
print(result.returncode)
第一行注释后,输出如下:
15:44:04 up 5 days, 6:34, 4 users, load average: 29,16, 29,89, 25,09
15:44:04 up 5 days, 6:34, 4 users, load average: 29,16, 29,89, 25,09
0
如果我取消注释第一行,则输出如下所示:
1
没有执行任何操作,没有打印错误信息,返回码是 1。
一切都在 Ubuntu 19.10 上进行了测试。 在 Ubuntu 18.04 上没有这样的问题。
可能是因为 h5py 在 18.04 与串行 hdf5 链接,在 19.04 与并行 hdf 链接
这是错误还是功能? 在这种情况下启动 mpi 任务的正确方法是什么?
【问题讨论】:
-
h5py依赖于mpi4py,这意味着MPI_Init_thread()被调用之前mpirun。由于内部原因,Open MPI 应用程序无法调用mpirun。一种选择是重建h5py,使其不依赖于mpi4py,另一种选择是使用MPI_Comm_spawn()而不是subprocess.run()
标签: python python-3.x subprocess mpi h5py