Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] Bug btl:tcp with grpcomm:hier
From: Damien Guinier (damien.guinier_at_[hidden])
Date: 2011-03-16 14:48:45

Hi all

 From my test, it is impossible to use "btl:tcp" with "grpcomm:hier".
The "grpcomm:hier" module is important because, "srun" launch protocol
can't use any other "grpcomm" module.
You can reproduce this bug, by using "btl:tcp" and "grpcomm:hier" , when
you create a ring(like: IMB sendrecv)

$>salloc -N 2 -n 4 mpirun --mca grpcomm hier --mca btl self,sm,tcp
./IMB-MPI1 Sendrecv
salloc: Granted job allocation 2979
received unexpected process identifier [[59536,1],0]
received unexpected process identifier [[59536,1],2]

This error message show: "btl:tcp" have create a connection to a peer,
but it not the good one ( peer identity is checked with the "ack").
To create a connection between two peers with "btl:tcp":
- Each peer broadcast theirs IP parameters with ompi_modex_send().
- IP parameters from selected peer is received with ompi_modex_recv().

In fact, modex use "orte_grpcomm.set_proc_attr()" and
"orte_grpcomm.get_proc_attr()" to exchange data. The problem is
"grpcomm:hier" doesn't make difference between two peer on the same
node. From my test the IP parameters, from the fist rank on the selected
node, is always return.

"grpcomm:hier" is restricted to "btl:sm" and "btl:openib" ?


One easy solution to fix this problem, is to add rank information in the
"name" variable on
- ompi/runtime/ompi_module_exchange.c:ompi_modex_send()
- ompi/runtime/ompi_module_exchange.c:ompi_modex_recv()
but I dislike it.

Someone have a better solution ?

thanks you