繁体   English   中英

如何运行基本的mpi4py代码

[英]how to run a basic mpi4py code

对mpi4py来说是全新的。 教程中计算pi示例如下:

主人(或父母或客户)方:

#!/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个父代码实例,而不仅仅是子代码。 (我得到STDOUT的4个输出。)如果我尝试通过import或execfile在python中运行,它将无法运行。 给出错误“解析参数的错误”。 另外,我假设子代码名为“cpi,py”? 谢谢。 我知道一个非常基本的问题。 如果我能找到答案,我就不会打扰你们了。

嗯,这是一件很简单的事情,很难。 我从命令行运行mpirun,只有一个进程。 父代码本身产生了其他代码:

mpirun -np 1 python parent_code.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM