[ofiwg] A question on FI_DELIVERY_COMPLETE

Hefty, Sean sean.hefty at intel.com
Mon Oct 26 12:05:21 PDT 2015

> Here’s my understanding of how FI_DELIVERY_COMPLETE works on the
> *responder* end:  If you are doing an RMA operation, and the requester
> uses CQ_REMOTE_DATA to signal the end of the transfer to the responder,
> and the responder has FI_DELIVERY_COMPLETE set, then the responder won’t
> get a completion event until the data is actually visible to the
> responder.
> I ask because the man pages imply that FI_DELIVERY_COMPLETE, which is an
> operation flag, applies only to the requester side.  But it is much less
> important to notify the requester that data is visible to the responder,
> than it is to notify the responder itself.

FI_DELIVERY_COMPLETE is intended only to apply to the initiator of an operation.

The generation of a notification at the target is assumed to occur after the operation has completed -- i.e. any transferred data is available.  This holds whether the completion is an entry placed into a CQ, or a completion counter has been incremented.  The FI_REMOTE_CQ_DATA flag is somewhat independent of this.  That flag just means that application data was written into a CQ entry.

Although IB cannot generate target notification without FI_REMOTE_CQ_DATA (i.e. immediate data), libfabric does not require this.

The generation of a completion entry at the target is independent of the completion mode selected by the initiator.

- Sean

More information about the ofiwg mailing list