On Thu, 19 Jun 2008, Terry Dontje wrote:

But my concern is not the raw performance of MPI_Iprobe in this case but more of an interaction between MPI and an application. The concern is if it takes 2 MPI_Iprobes to get to the real message (instead of one) then could this induce a synchronization delay in an application? That is by the application not receiving the "real" message in the first MPI_Iprobe it may decide to do other work while the other processes are potentially blocked waiting for it to do some communications.

I'd have to agree, which is why I proposed calling opal_progres at the start of every iProbe. By the way, the 40us time hit sounds high, but really should only happen if you have the TCP BTL actively talking to a peer. Or you've hit the high water mark and are checking TCP communication on the OOB connection.

In fact TCP has the potential to exhibit the same behavior. However, TCP after each successful poll it empty the socket, so it might read more than one message. As we have to empty the temporary buffer, we interpret most of the messages inside, and this is why TCP exhibit a different behavior.

I guess this difference in behavior between the SM BTL and TCP BTL is disturbing to me. Does just processing one fifo entry per sm_progress call per connection buying us performance? Would draining the acks be detrimental to performance? Wouldn't providing the messages at the time they arrived meet the rule of obviousness to application writers?

I know there is a slippery slope here of saying ok you've read one message should read more until there is none on the fifo. I believe that is really debatable and could go either way depending on the application. But ack messages are not visible to the users. Which is why I was only asking about draining the ack packets.

Galen could say better than I, but I thought the IB BTL did basically what you propose -- drain until you have a "real" message. That seems to make the most sense to me and actually seemed to make IB run better for real jobs, but what do I know?

Brian

Reply via email to