I ran into a hang in a test in which the sender sends less data than the 
receiver is expecting.  For example, the following shows the receiver expecting 
twice what the sender is sending.

Rank 0:  MPI_Send(buf, BUFSIZE, MPI_INT, 1, 99, MPI_COMM_WORLD)
Rank 1: MPI_Recv(buf, BUFSIZE*2,  MPI_INT, 0, 99, MPI_COMM_WORLD)

This is also reproducible using one of the intel tests and adjusting the eager 
value for the openib BTL.

Ø  mpirun -np 2 -host frick,frack -mca btl_openib_eager_limit 56 
MPI_Send_overtake_c

In most cases, this works just fine.  However, when the PML protocol used is 
the RGET protocol, the test hangs.   Below is a proposed fix for this issue.
I believe we want to be checking against req_bytes_packed rather than 
req_bytes_expected as req_bytes_expected is what the user originally told us.
Otherwise, with the current code, we never send a FIN message back to the 
sender.

Any thoughts?

[rvandevaart@sm065 ompi-trunk]$ svn diff ompi/mca/pml/ob1/pml_ob1_recvreq.c
Index: ompi/mca/pml/ob1/pml_ob1_recvreq.c
===================================================================
--- ompi/mca/pml/ob1/pml_ob1_recvreq.c        (revision 28633)
+++ ompi/mca/pml/ob1/pml_ob1_recvreq.c     (working copy)
@@ -335,7 +335,7 @@
     /* is receive request complete */
     OPAL_THREAD_ADD_SIZE_T(&recvreq->req_bytes_received, frag->rdma_length);
-    if (recvreq->req_bytes_expected <= recvreq->req_bytes_received) {
+    if (recvreq->req_recv.req_bytes_packed <= recvreq->req_bytes_received) {
         mca_pml_ob1_send_fin(recvreq->req_recv.req_base.req_proc,
                               bml_btl,
                                      frag->rdma_hdr.hdr_rget.hdr_des,



-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may 
contain
confidential information.  Any unauthorized review, use, disclosure or 
distribution
is prohibited.  If you are not the intended recipient, please contact the 
sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

Reply via email to