我是新来的。calculate pi example from the Tutorial是这样的:
主(或父,或客户端):
#!/usr/bin/env python
from mpi4py import MPI
import numpy
import sys
comm = MPI.COMM_SELF.Spawn(sys.executable,
args=['cpi.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()
工作(或子级或服务器)端:
#!/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()
很抱歉这个愚蠢的问题,但是:我该怎么办?如果我从命令行执行mpirun,看起来它正在创建父代码的4个实例,而不仅仅是子代码。(我有4个输出到STDOUT。)如果我试图通过导入或execfile在python中运行,它将不会运行。给出错误“错误分析参数”。另外,我假设子代码名为“cpi,py”?谢谢。我知道,这是一个非常基本的问题。如果我能找到答案,我就不会打扰你们了。
好吧,这是其中一件很简单,很难做到的事情。我从命令行运行mpirun,只运行一个进程。父代码本身生成其他代码:
相关问题 更多 >
编程相关推荐