[OFIWG-MPI] Call today

Hefty, Sean sean.hefty at intel.com
Thu May 22 09:43:06 PDT 2014


With permission, copying mailing list on side thread that popped up.

I understand MPI has wild card receives.  But tagged semantics are useful even when associated with a generic endpoint concept, or a specific address.  Note the proposed endpoint concept is not necessarily bound to a specific piece of hardware, though it may be based on the provider implementation.  The tagged operations themselves may be implemented by hardware and are not restricted to being purely a software construct.

Tagged interfaces, as well as other interfaces such as message queues, may still exist above the endpoint.  But that layering of interfaces seems better suited above the fabric interfaces (e.g. MPI), rather than included with it.  This seems more debatable to me though, and we could examine whether a domain or fabric object should have send/receive capabilities.

- Sean

> -----Original Message-----
> From: Richard Graham [mailto:richardg at mellanox.com]
> Sent: Wednesday, May 21, 2014 11:09 AM
> To: Hefty, Sean
> Cc: Paul Grun (grun at cray.com); Liran Liss
> Subject: RE: Call today
> 
> Tag matching as it comes to MPI semantics is not local to a given pair of
> processes, e.g. MPI has a wild card receive that can take data from any
> source, and therefore the matching context is broader than just a single
> pair of source and destination.
> 
> Rich
> 
> -----Original Message-----
> From: Hefty, Sean [mailto:sean.hefty at intel.com]
> Sent: Wednesday, May 21, 2014 1:13 PM
> To: Richard Graham
> Cc: Paul Grun (grun at cray.com); Liran Liss
> Subject: RE: Call today
> 
> Tag matching, RMA, atomics, and message operations are currently associated
> with an endpoint, but the functions are independent of the communication
> protocol in use.  Conceptually, it seems reasonable to think of tag
> matching as a merging of message and RMA write operations.
> 
> I agree that an endpoint is associated with the data source/sink.  There is
> no implied mapping between a process and an endpoint.
> 
> 
> > -----Original Message-----
> > From: Richard Graham [mailto:richardg at mellanox.com]
> > Sent: Tuesday, May 20, 2014 9:22 PM
> > To: Hefty, Sean
> > Cc: Paul Grun (grun at cray.com); Liran Liss
> > Subject: RE: Call today
> >
> > I suppose that you could consider tag-matching as part of transport.
> > However, I would argue that such protocols should be independent of
> > whether or not a reliable or unreliable communication protocol is used
> (at least
> > when it comes to the tag support needed for MPI).    Also, I associate an
> > end-point with either the source and/or the sync of data.  In MPI tag
> > matching is associated with mpi-level (process,communicator) pair, and
> > therefore the tag-matching context may be associated with many end-
> points.
> > I would therefore keep tag-matching as a separate concept.
> >
> > Rich
> >
> > -----Original Message-----
> > From: Hefty, Sean [mailto:sean.hefty at intel.com]
> > Sent: Tuesday, May 20, 2014 1:26 PM
> > To: Richard Graham
> > Cc: Paul Grun (grun at cray.com); Liran Liss
> > Subject: RE: Call today
> >
> > Tag-matching is a transport object (protocol), so I do think it makes
> > sense being associated with a transport level object (i.e. endpoint).
> >
> > I thought you were referring to the SRQ, which may or may not be a
> > transport level object.  If the sharing of data buffer(s) among
> > multiple connections is not considered a transport object, then I
> > agree, it may make sense to have it be a separate object with its own
> interfaces.
> > Alternatively, it could also be a property of endpoints to share
> > receive buffers.
> >
> > When the SRQ appears in the transport object (protocol), it may get
> > more complex.
> >
> > For initial thoughts, sharing receive buffers could be handled by:
> >
> > 1. Creating an explicit SRQ object as a 'peer' to an endpoint.  SRQ
> > would have the ability to associate receive buffers with it.
> > Endpoints would need to be associated with an SRQ to make use of it.
> > 2. Create an SRQ 'endpoint' object.  A send-receive endpoint could be
> > created from and inherent the SRQ interfaces.
> > 3. Add an endpoint property to allow sharing data buffers.  Shared
> > buffers could be posted to a domain object, or, alternatively, any
> endpoint.
> >
> > Ultimately, the question becomes a matter of where the 'post receive
> > buffer' operation resides, and the behavior of any 'post receive buffer'
> > call which may reside elsewhere.  E.g. SRQ::PostRecv() versus
> > EP::PostRecv(), what is the behavior of EP::PostRecv() if buffer
> > sharing is enabled?
> >
> > These assume SRQ as a non-transport object, or at least one that is
> > not visible to the application.
> >
> >
> >
> > > Liran mentioned that you wanted me to repeat what I said - my only
> > > comment was that we not couple transport (connection based
> > > transport) with tag- matching (or any other object supported by the
> library).
> > > These are two different concepts, and should be kept separate.
> > >
> > >
> > >
> > > Rich




More information about the ofiwg-mpi mailing list