Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 2fe96174012fea2d88f752857a5bea1d > files > 44

python-mpi4py-0.6.0-4mdv2008.1.i586.rpm

from mpi4py import MPI

rprint = MPI._rprint
pprint = MPI._pprint
MPI.size = MPI.WORLD_SIZE
MPI.rank = MPI.WORLD_RANK

# root process
root = MPI.size/2
rprint('root: %d'%root, MPI.COMM_WORLD, root)


# some data in root,
# no data in others
if MPI.rank == root:
    data = [ MPI.size*10+i for i in xrange(MPI.size) ]
else:
    data = None


# print input data
msg = "[%d] input:  %s" % (MPI.rank, data)
pprint(msg, MPI.COMM_WORLD, root)


# scatter data from root to all
# two calling forms
if 1:
    data = MPI.WORLD[root].Scatter(data)
else:
    if MPI.rank == root: data = MPI.WORLD[root].Scatter(data)
    else:                data = MPI.WORLD[root].Scatter()


# print result data
msg = "[%d] result: %s" % (MPI.rank, data)
pprint(msg, MPI.COMM_WORLD, root)