Commit bf114ec3 authored by Committed by Pavan BalajiBrowse files
Modify MPICH infrastructure to support atomic GET.
When GACC/FOP is used with MPI_NO_OP, the operation is essentially an atomic GET. Originally MPICH implemented this by converting GACC/FOP to GET, which lost the atomicity of that operation. In this patch, we modify the implementation of GACC/FOP to support atomic GET. Main modifications are listed below: (1) When streaming GACC operation, originally we use origin data size to calculate the stream unit size. Since origin data is zero in atomic GET, here we use target data size instead to calculate the stream unit size. (2) On the origin side, if it is atomic GET, CH3 just issues packet header and metadata for derived datatypes (if needed) and does not try to issue from origin buffer; on the target side, after packet header and metadata for derived datatypes (if needed) are received, the final request handler is triggered, CH3 does not try to receive any data from origin. Signed-off-by: Pavan Balaji <email@example.com>
Showing with 292 additions and 134 deletions