python 来自mpi4py存储库的Pi计算脚本的修改版本。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 来自mpi4py存储库的Pi计算脚本的修改版本。相关的知识,希望对你有一定的参考价值。

from mpi4py import MPI
from math   import pi as PI
from numpy  import array

def comp_pi(n, myrank=0, nprocs=1):
    h = 1.0 / n
    s = 0.0
    for i in range(myrank + 1, n + 1, nprocs):
        x = h * (i - 0.5)
        s += 4.0 / (1.0 + x**2)
    return s * h

def prn_pi(pi, PI):
    message = "pi is approximately %.16f, error is %.16f"
    print  (message % (pi, abs(pi - PI)))

comm = MPI.COMM_WORLD
nprocs = comm.Get_size()
myrank = comm.Get_rank()

n    = array(0, dtype=int)
pi   = array(0, dtype=float)
mypi = array(0, dtype=float)

if myrank == 0:
    _n = 20 # Enter the number of intervals
    n.fill(_n)
comm.Bcast([n, MPI.INT], root=0)
_mypi = comp_pi(n, myrank, nprocs)
mypi.fill(_mypi)
comm.Reduce([mypi, MPI.DOUBLE], [pi, MPI.DOUBLE],
            op=MPI.SUM, root=0)
if myrank == 0:
    prn_pi(pi, PI)

以上是关于python 来自mpi4py存储库的Pi计算脚本的修改版本。的主要内容,如果未能解决你的问题,请参考以下文章

Python 高性能并行计算之 mpi4py

Python多核编程mpi4py实践及并行计算-环境搭建篇

mpi4py 返回排名差异

并行计算Python / Raspberry Pi

大数据系列9:mpi4py高性能计算

python 用于列出github组织的所有存储库的脚本