(Probably this message only for George, but I'll toss it out to the alias/archive.)

I have a question about the sm sendi() function. What should happen if the sendi() function attempts to write to the FIFO, but the FIFO is full?

Currently, it appears that the sendi() function returns an error code to the PML, which assumes that the sendi() tried to send the message but failed and so just tried to allocate a descriptor.

But is that what should happen? The condition of the FIFO being full is a little misleading since the write is still queued for further progress -- not in the FIFO itself but in the pending-send queue. This distinction should perhaps not matter to the upper layers. The upper layers should still view the send as "completed" (buffered by the MPI implementation to be progressed later). I would think that the sendi() function should return a SUCCESS code.

Relevent source code is

PML, line 496
https://svn.open-mpi.org/source/xref/ompi_1.3/ompi/mca/pml/ob1/pml_ob1_sendreq.c#496

BTL, line 785
https://svn.open-mpi.org/source/xref/ompi_1.3/ompi/mca/btl/sm/btl_sm.c#785

FIFO write, line 18
https://svn.open-mpi.org/opengrok/xref/ompi_1.3/ompi/mca/btl/sm/btl_sm_fifo.h#18

Reply via email to