• Xin Zhao's avatar
    Add extended packet header in CH3 layer used by RMA messages · 25e40e43
    Xin Zhao authored
    Here we added extended packet header in CH3 layer used to
    transmit attributes that are only needed in RMA and are not
    needed in two-sided communication. The key implementation
    details are listed as follows:
    Origin side:
    (1) The extended packet header is stored in the request, and
    the request is passed to the issuing function (iSendv() or
    sendNoncontig_fn()) in the lower layer. The issuing function
    checks if the extended packet header exists in the request,
    if so, it will issue that header. (The modifications in lower
    layer are in the next commit.)
    (2) There is a fast path used when (origin data is contiguous &&
    target data is predefined && extended packet header is not used).
    In such case, we do not need to create a request beforehand
    but can use iStartMsgv() issuing function which try to issue
    the entire message as soon as possible.
    Target side:
    (1) There are two req handler being used when extended packet header
    is used or target datatype is derived. The first req handler is
    triggered when extended packet header / target datatype info is
    arrived, and the second req handler is triggered when actual data
    is arrived.
    (2) When target side receives a stream unit which is piggybacked with
    LOCK, it will drop the stream_offset in extended packet header, since
    the stream unit must be the first one and stream_offset must be 0.
    Signed-off-by: Pavan Balaji's avatarPavan Balaji <balaji@anl.gov>
mpid_rma_issue.h 54.7 KB