Advertisement
calcpage

myPI_mpi_v04.py

Jan 29th, 2020
728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | None | 0 0
  1. #!/usr/bin/python
  2. #mpirun -np 4 python ./myPI_mpi_v04.py
  3. from mpi4py import MPI
  4. import math, timeit
  5.  
  6. def compute_pi(n, start=0, step=1):
  7.     h=1.0/n
  8.     s=0.0
  9.     for i in range(start, n, step):
  10.         x=h*(i+0.5)
  11.         s+=4.0/(1.0+x**2)
  12.     return s*h
  13.  
  14. comm=MPI.COMM_WORLD
  15. nprocs=comm.Get_size()
  16. myrank=comm.Get_rank()
  17.  
  18. if myrank==0:
  19.     n=1000000
  20.     start_time=timeit.default_timer()
  21. else:
  22.     n=None
  23.    
  24. n=comm.bcast(n, root=0)
  25. mypi=compute_pi(n,myrank,nprocs)
  26. pi=comm.reduce(mypi,op=MPI.SUM,root=0)
  27.  
  28. if myrank==0:
  29.     rel_error=pi-math.pi
  30.     abs_error=abs(rel_error)
  31.     print('pi   = ' + str(math.pi))
  32.     print('area = '+ str(pi))
  33.     print('relative error = '+ str(rel_error))
  34.     end_time = timeit.default_timer()
  35.     print('start time = ' + str(start_time))
  36.     print('end time   = ' + str(end_time))
  37.     print('cpu time   = ' + str(end_time-start_time) + ' seconds')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement