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.olive...@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.olive...@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 <gabr...@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 >>> > us...@open-mpi.org >>> > http://www.open-mpi.org/mailman/listinfo.cgi/users >>> >>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>> >> >> >