> > Not to muddy the point, but if there's enough ambiguity in the Standard
> > for people to ignore the progress rule, then I think (hope) there's enough
> > ambiguity for people to ignore the sender throttling issue too ;)
> 
> I understand your position, and I used to agree until I was forced to
> change my mind by naive users :-)

Right.  That's what I meant by:

  "Most of the vendors aren't allowed to have this perspective....".

> 
> Poorly written MPI codes won't likely segfault or deadlock because the
> progress rule was ignored. However, users will proudly tell you that you
> have a memory leak if you don't limit the size of the unexpected queue
> and their codes with no flow control blow up.

Yep.  I don't lose money when I tell these people to go fix their code.  I like
to think that I actually get paid to tell these people to go fix their code....

> 
> You don't have to make it very efficient (per-sender credits
> definitively does not scale), but you need to have a way to stall/slow
> the sender when the unexpected queue gets too big. That's quite easy to
> do without affecting the common case.

Not on my network.  I don't have the nice situation that the Standard refers
to where one producer is overwhelming the consumer.  For a reasonable number
of endpoints and a known offending sender, it's pretty straightforward to
do a user-level credit-based flow control.

I'm looking at a network where the number of endpoints is large enough that
everybody can't have a credit to start with, and the "offender" isn't any
single process, but rather a combination of processes doing N-to-1 where N
is sufficiently large.  I can't just tell one process to slow down.  I have
to tell them all to slow down and do it quickly...

-Ron


Reply via email to