Sophie

Sophie

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

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

from mpi4py import MPI

MPI.size = MPI.WORLD_SIZE
MPI.rank = MPI.WORLD_RANK

# get group of COMM_WORLD
group = MPI.WORLD.Get_group()

# part group in halves
halve  = range(0, MPI.size/2)
group1 = group.Incl(halve)
group2 = group.Excl(halve)

# range of ranks for each group
ranks1 = range(group1.Get_size())
ranks2 = range(group2.Get_size())

# map group ranks to COMM_WORLD rank
tr1 = MPI.Group.Translate_ranks(group1, ranks1, group)
tr2 = MPI.Group.Translate_ranks(group2, ranks2, group)

print '[%d] ranks1: %s - trans1: %s' % (MPI.rank,ranks1,tr1)
print '[%d] ranks2: %s - trans2: %s' % (MPI.rank,ranks2,tr2)
print