Requirements:
- Python
- numpy
- C compiler
- MPI C library (such as openmpi)
To verify if the installation was correct we must write:
mpirun -np 2 testpypar.py
It must try to run a C/MPI program.
Here is an example program written in pypar
import pypar # The Python-MPI interface numproc = pypar.size() myid = pypar.rank() node = pypar.get_processor_name() print "I am proc %d of %d on node %s" %(myid, numproc, node) if numproc < 2: print "Demo must run on at least 2 processors to continue" pypar.abort() if myid == 0: msg = "MSGP0" print 'Processor 0 sending message "%s" to processor %d' %(msg, 1) pypar.send(msg, 1) msg, status = pypar.receive(numproc-1, return_status=True) print 'Processor 0 received message "%s" from processor %d' %(msg, numproc-1) print 'Size of msg was %d bytes' %(status.bytes()) else: source = myid-1 destination = (myid+1)%numproc msg, status = pypar.receive(source, return_status=True) print 'Processor %d received message "%s" from processor %d'\ %(myid, msg, source) print 'Size of msg was %d bytes' %(status.bytes()) msg = msg + '->P' + str(myid) #Update message print 'Processor %d sending msg "%s" to %d' %(myid, msg, destination) pypar.send(msg, destination) pypar.finalize()
This program sends a message to processor 0. The message is traveling through the processors in the form of a ring, where each one of the processors is adding a bit to the message, then it returns to processor 0.
In order to know what programs are running on the processors we can make the call myid = pypar.rank(). To obtain the total number of processors we write proc = pypar.size()
In order to start running py-par you can write:
mpirun -np 4 demo.py
This command will run 4 different copies of the program in different processors
Bibliography
Py-par documentation
Py-par: Parallel programming for python
Good, 5+5. Please try to remember to include in the future in your nominations the reason why you nominate the person.
ResponderEliminar