- changed status to resolved
Implement source completion for VIS puts
GEX collaborator-snapshot now has support for source completion events on VIS puts, and we need to wire this up to the UPC++ VIS support (which currently implements source completion as operation completion).
The full EX spec is here , and here is the relevant text:
GEX_FLAG_VIS_WITH_LC: (
gex_VIS_*Put{NB,NBI}
only) This flag requests asynchronous local completion indication for the local data payload buffers comprising the source region(s) of the VIS Put operation. Without this flag, local completion behaves as GEX_EVENT_DEFER, i.e. folded into operation completion.
When this flag is passed togex_VIS_*PutNBI
, asynchronous local completion indication behaves as specified in sec:"Extended API" for lc_opt=GEX_EVENT_GROUP.
When this flag is passed togex_VIS_*PutNB
, asynchronous local completion indication behaves as specified in sec:"Extended API" for lc_opt=&(gex_Event_t variable). In the latter case, the client should retrieve the gex_Event_t corresponding to local completion by passing the root gex_Event_t returned by the Put initiation call togex_Event_QueryLeaf()
, for example:
gex_Event_t VISput_RC = gex_VIS_VectorPutNB(..., GEX_FLAG_VIS_WITH_LC);
gex_Event_t VISput_LC = gex_Event_QueryLeaf(VISput_RC, GEX_EC_LC);
The second call is only valid when GEX_FLAG_VIS_WITH_LC was passed to the
gex_VIS_*PutNB()
call, and otherwise has undefined behavior.
Final note: on some conduits, requesting LC slightly increases overhead, so we should only do so if the UPC++ user actually scheduled some source completion action.
Comments (1)
-
reporter - Log in to comment
Fixed by @bvstraalen in 2eedf9e