-
Notifications
You must be signed in to change notification settings - Fork 420
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make amPutDone non-blocking (#26123)
Modify amPutDone so that the PUT of the "done" indicator is non-blocking. This is invoked by an active message handler and notifies the sender that the active message has completed. There is no need for the active message handler to wait for the PUT to complete because, by definition, the active message has completed so there is nothing to be performed after the PUT. One complication is that the transmit context must be progressed; normally it would be progressed while waiting for the PUT to complete. Instead, the transmit context is progressed either when it is freed, or during shutdown, whichever comes first, unless it is the transmit context for the active message thread in which case it is progressed continually by that thread. As a consequence of these changes, RMA PUT injection has been removed and CHPL_RT_COMM_OFI_INJECT_RMA is now obsolete. The benefit of injection is that it makes the source buffer available for reuse once the operation has been initiated, but 1) this isn't advantageous to blocking PUTs because the task is going to block until the PUT completes anyway, 2) the semantics of non-blocking PUTs (via chpl_comm_put_nb) require that the source buffer not be modified until the PUT completes, and 3) `amPutDone` uses a persistent source buffer containing a constant value, so re-use is not an issue. [Reviewed by @jabraham17, thank you.]
- Loading branch information
Showing
1 changed file
with
47 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters