[Mpi3-hybridpm] First cut at slides

Jeff Squyres (jsquyres) jsquyres at cisco.com
Mon Jun 24 10:01:21 CDT 2013

On Jun 22, 2013, at 9:30 AM, Pavan Balaji <balaji at mcs.anl.gov> wrote:

>> I guess my point is that process A must wait for the *actual*
>> finalization in process B (which is the 2nd one), and if Finalize
>> synchronizes (which most.. but not all.. MPI implementations do),
>> then A will block until B calls the 2nd Finalize.
> Eh?  My reading was that they *might* synchronize on every FINALIZE call, but will *finalize* only when ref-count is zero.

Yes, that is definitely possible (since "collective" *might* mean synchronize).

But I gave this some more thought over the weekend, and I'm now even more uncomfortable with it: in my example, process A calls FINALIZE once, and that's when it actually finalizes process A.  It's collective with the *first* call to FINALIZE on proc B, which *doesn't* finalize process B.  

So yes, A/FINALIZE *might* synch with B/first FINALIZE -- but that's not really the point.  A also has the added requirement that it needs to *actually finalize* A.  And it therefore needs to synchronize with B/second FINALIZE, for which it was *not* explicitly paired via a collective operation.

Put differently: A's FINALIZE is collective with B/first FINALIZE (by definition), but in practice it may need to synchronize with B/second FINALIZE.

That's just weird.

>> But I think I'm coming to the conclusion that if you want to not be
>> affected by Finalize-possibly-blocking semantics, then you should
>> just call MPI_COMM_DISCONNECT first.
> I don't think so.

What do you mean?

Jeff Squyres
jsquyres at cisco.com
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/

More information about the mpiwg-hybridpm mailing list