Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在windows 7上,进程之间的mpi4py spawn通信失败_Python_Mpi_Mpi4py - Fatal编程技术网

Python 在windows 7上,进程之间的mpi4py spawn通信失败

Python 在windows 7上,进程之间的mpi4py spawn通信失败,python,mpi,mpi4py,Python,Mpi,Mpi4py,我的目标是让一个python脚本能够在不同的进程上启动另一个python脚本,也就是说,我希望将脚本扩展到n个进程上。为了尝试实现这一点,我正在尝试运行文档中给出的mpi4py spawn示例(请参阅)。但此示例失败,并显示以下消息: 至少有一对MPI进程无法相互联系以进行访问 MPI通信。这意味着。。。这种错误有时可能是错误的 忘记指定“自我”BTL的结果。。。你的MPI工作 现在将要中止 我的安装在带有openMPI 1.6.1和最新mpi4py安装的windows 7计算机上 就我而言,代

我的目标是让一个python脚本能够在不同的进程上启动另一个python脚本,也就是说,我希望将脚本扩展到n个进程上。为了尝试实现这一点,我正在尝试运行文档中给出的mpi4py spawn示例(请参阅)。但此示例失败,并显示以下消息:

至少有一对MPI进程无法相互联系以进行访问 MPI通信。这意味着。。。这种错误有时可能是错误的 忘记指定“自我”BTL的结果。。。你的MPI工作 现在将要中止

我的安装在带有openMPI 1.6.1和最新mpi4py安装的windows 7计算机上

就我而言,代码是: master.py:

#!/usr/bin/env python
from mpi4py import MPI
import numpy
import sys

comm = MPI.COMM_SELF.Spawn(sys.executable,
                           args=['worker.py'],
                           maxprocs=5)

N = numpy.array(100, 'i')
comm.Bcast([N, MPI.INT], root=MPI.ROOT)
PI = numpy.array(0.0, 'd')
comm.Reduce(None, [PI, MPI.DOUBLE],
            op=MPI.SUM, root=MPI.ROOT)
print(PI)

comm.Disconnect()
worker.py:

#!/usr/bin/env python
from mpi4py import MPI
import numpy

comm = MPI.Comm.Get_parent()
size = comm.Get_size()
rank = comm.Get_rank()

N = numpy.array(0, dtype='i')
comm.Bcast([N, MPI.INT], root=0)
h = 1.0 / N; s = 0.0
for i in range(rank, N, size):
    x = h * (i + 0.5)
    s += 4.0 / (1.0 + x**2)
PI = numpy.array(s * h, dtype='d')
comm.Reduce([PI, MPI.DOUBLE], None,
            op=MPI.SUM, root=0)

comm.Disconnect()
产生错误的行是:

comm = MPI.COMM_SELF.Spawn(sys.executable,
                           args=['worker.py'],
                           maxprocs=5)
运行脚本的命令位于cmd提示符中:

mpirun -n 1 python.exe master.py