Hi there, I tried to understand the behavior Thatyene said and I think is a bug in open mpi implementation.
I do not know what exactly is happening because I am not an expert in ompi code, but I could see that when one process define its color as MPI_UNDEFINED, one of the processes on the inter-communicator blocks in the call to the function bellow:
/* Step 3: set up the communicator */
/* --------------------------------------------------------- */
/* Create the communicator finally */
rc = ompi_comm_set ( &newcomp, /* new comm */
comm, /* old comm */
my_size, /* local_size */
lranks, /* local_ranks */
my_rsize, /* remote_size */
rranks, /* remote_ranks */
NULL, /* attrs */
comm->error_handler,/* error handler */
NULL, /* topo component */
NULL, /* local group */
NULL /* remote group */
This function is called inside ompi_comm_split, in the file ompi/communicator/comm.c
Is there a solution for this problem in some revision? I insist in this problem because I need to use this function for a similar purpose.
On Wed, Jan 25, 2012 at 4:50 PM, Thatyene Louise Alves de Souza Ramos <firstname.lastname@example.org>
It seems the split is blocking when must return MPI_COMM_NULL, in the case I have one process with a color that does not exist in the other group or with the color = MPI_UNDEFINED.
On Wed, Jan 25, 2012 at 4:28 PM, Rodrigo Oliveira <email@example.com>
I took a look in your code and it seems to be logically correct. Maybe there is some problem when you call the split function having one client process with color = MPI_UNDEFINED. I understood you are trying to isolate one of the client process to do something applicable only to it, am I wrong? According to open mpi documentation, this function can be used to do that, but it is not working. Anyone have any idea about what can be?
users mailing list