Hello all,

Sorry for the newbie question, but is there a way of making petsc4py work with 
an MPI group or subcommunicator?  I  saw a solution posted back in 2010 
(http://lists.mcs.anl.gov/pipermail/petsc-users/2010-May/006382.html), but it 
does not work for me. Indeed, if I try to use petsc4py.init(comm=newcom), then 
my sample code prints a msg "Attempting to use an MPI routine before 
initializing MPI".  Below I attach both the output and the source of the python 
code.

kind regards
Rodrigo


time mpirun -n 5 python split_comm_ex2.py
Global: rank 0 of 5. New comm : rank  0 of  3
Global: rank 1 of 5. New comm : rank  0 of  2
Global: rank 2 of 5. New comm : rank  1 of  3
Global: rank 3 of 5. New comm : rank  1 of  2
Global: rank 4 of 5. New comm : rank  2 of  3
Attempting to use an MPI routine before initializing MPI
Attempting to use an MPI routine before initializing MPI

real    0m0.655s
user    0m1.122s
sys     0m1.047s

And the python code:

from mpi4py import MPI

comm = MPI.COMM_WORLD
world_rank = comm.rank
world_size = comm.size

color = world_rank % 2

newcomm = comm.Split(color)
newcomm_rank = newcomm.rank
newcomm_size = newcomm.size

for i in range(world_size):
    comm.Barrier()
    if (world_rank == i):
        print ("Global: rank %d of %d. New comm : rank % d of  %d" %
               (world_rank, world_size, newcomm_rank, newcomm_size))

if newcomm.rank == 0:
    import petsc4py
    petsc4py.init(comm=newcomm)
    from petsc4py import PETSc

    pcomm = PETSc.COMM_WORLD
    print('pcomm size is {}/{}'.format(pcomm.rank, pcomm.size))

newcomm.Free()

________________________________


This email and any files transmitted with it are confidential and are intended 
solely for the use of the individual or entity to whom they are addressed. If 
you are not the original recipient or the person responsible for delivering the 
email to the intended recipient, be advised that you have received this email 
in error, and that any use, dissemination, forwarding, printing, or copying of 
this email is strictly prohibited. If you received this email in error, please 
immediately notify the sender and delete the original.

Reply via email to