daleroberts / pypar

Efficient and scalable parallelism using the message passing interface (MPI) to handle big data and highly computational problems.
GNU General Public License v3.0
69 stars 15 forks source link
big-data map-reduce mpi python

Logo

PyPar is a python library that provides efficient and scalable parallelism using the message passing interface (MPI) to handle big data and highly computational problems.

Build Status

PyPar is used by a number of large projects, such as:

Example

A simple 'pass the parcel' example.

import pypar as pp

ncpus = pp.size()
rank = pp.rank()
node = pp.get_processor_name()

print 'I am rank %d of %d on node %s' % (rank, ncpus, node)

if rank == 0:
  msg = 'P0'
  pp.send(msg, destination=1)
  msg = pp.receive(source=rank-1)
  print 'Processor 0 received message "%s" from rank %d' % (msg, rank-1)
else:
  source = rank-1
  destination = (rank+1) % ncpus
  msg = pp.receive(source)
  msg = msg + 'P' + str(rank)
  pp.send(msg, destination)

pp.finalize()