### added mpi python example

parent b279b386
 ... ... @@ -107,3 +107,63 @@ \$ mpiexec -bycore -bind-to-core python hello_world.py ``` In this example, we run MPI4Py enabled code on 4 nodes, 16 cores per node (total of 64 processes), each python process is bound to a different core. More examples and documentation can be found on [MPI for Python webpage](https://pypi.python.org/pypi/mpi4py). ###Adding numbers Task: count sum of numbers from 1 to 1 000 000. (There is an easy formula to count the sum of arithmetic sequence, but we are showing the MPI solution with adding numbers one by one). ```python #!/usr/bin/python import numpy from mpi4py import MPI import time comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() a = 1 b = 1000000 perrank = b//size summ = numpy.zeros(1) comm.Barrier() start_time = time.time() temp = 0 for i in range(a + rank*perrank, a + (rank+1)*perrank): temp = temp + i summ = temp if rank == 0: total = numpy.zeros(1) else: total = None comm.Barrier() comm.Reduce(summ, total, op=MPI.SUM, root=0) stop_time = time.time() if rank == 0: #add the rest numbers to 1 000 000 for i in range(a + (size)*perrank, b+1): total = total + i print ("The sum of numbers from 1 to 1 000 000: ", int(total)) print ("time spent with ", size, " threads in milliseconds") print ("-----", int((time.time()-start_time)*1000), "-----") ``` Execute the code above like: ```console \$ qsub -I -q qexp -l select=4:ncpus=16,walltime=00:30:00 -A DD-13-5 \$ ml Python/3.5.2-intel-2017.00 \$ mpirun -n 2 python myprogram.py ``` You can increase n and watch time lowering.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment