Hi Edgar, 

Did you take a look at my code? Any idea about what is happening? I did a lot of tests and it does not work.

Thanks

On Tue, Mar 20, 2012 at 3:43 PM, Rodrigo Oliveira <rsilva.oliveira@gmail.com> wrote:
The command I use to compile and run is:

mpic++ server.cc -o server && mpic++ client.cc -o client && mpirun -np 1 ./server

Rodrigo


On Tue, Mar 20, 2012 at 3:40 PM, Rodrigo Oliveira <rsilva.oliveira@gmail.com> wrote:
Hi Edgar.

Thanks for the response. The simplified code is attached: server, client and a .h containing some constants. I put some "prints" to show the behavior.

Regards

Rodrigo


On Tue, Mar 20, 2012 at 11:47 AM, Edgar Gabriel <gabriel@cs.uh.edu> wrote:
do you have by any chance the actual or a small reproducer? It might be
much easier to hunt the problem down...

Thanks
Edgar

On 3/19/2012 8:12 PM, Rodrigo Oliveira wrote:
> Hi there.
>
> I am facing a very strange problem when using MPI_Barrier over an
> inter-communicator after some operations I describe bellow:
>
> 1) I start a server calling mpirun.
> 2) The server spawns 2 copies of a client using MPI_Comm_spawn, creating
> an inter-communicator between the two groups. The server group with 1
> process (lets name it as A) and the client group with 2 processes (group B).
> 3) After that, I need to detach one of the processes (rank 0) in group B
> from the inter-communicator AB. To do that I do the following steps:
>
> Server side:
>         .....
>         tmp_inter_comm = client_comm.Create ( client_comm.Get_group ( ) );
> client_comm.Free ( );
> client_comm = tmp_inter_comm;
>         .....
>         client_comm.Barrier();
>         .....
>
> Client side:
>         ....
>         rank = 0;
>         tmp_inter_comm = server_comm.Create ( server_comm.Get_group (
> ).Excl ( 1, &rank ) );
> server_comm.Free ( );
> server_comm = tmp_inter_comm;
>         .....
>         if (server_comm != MPI::COMM_NULL)
>             server_comm.Barrier();
>
>
> The problem: everything works fine until the call to Barrier. In that
> point, the server exits the barrier, but the client at the group B does
> not. Observe that we have only one process inside B, because I used Excl
> to remove one process from the original group.
>
> p.s.: This occurs in the version 1.5.4 and the C++ API.
>
> I am very concerned about this problem because this solution plays a
> very important role in my master thesis.
>
> Is this an ompi problem or am I doing something wrong?
>
> Thanks in advance
>
> Rodrigo Oliveira
>
>
> _______________________________________________
> users mailing list
> users@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


_______________________________________________
users mailing list
users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users