[mpich] MPICH primary repository branch, master, updated. v3.2b3-9-g52316da
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via 52316da7628b94ebf493492a6e4192f6bb4e7f04 (commit) via 83b2816f3eb8e5b00831d42193b1c5f158b5b90b (commit) from 7e2a47bb2f6d2c587cc7eadcbf80be5b191b0bc1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/52316da7628b94ebf493492a6e4192f6bb... commit 52316da7628b94ebf493492a6e4192f6bb4e7f04 Author: Valentin Petrov <[email protected]> Date: Fri May 29 12:08:39 2015 +0400 OFI netmod: RCD protocol bug fix. The previous version of the protocol assumed that fi_trecv utilizes direct address for matching. This does not hold, for example, for PSM OFI provider (it does not set claim FI_DIRECTED_RECV capability). So, the API1 set should work w/o directed recv assumption. Hence, we have to encapsulate rank info in the tag in the RCD protocol in order to avoid mismatch. Change-Id: I7868f2f033cf3cdec29f7daded8b29c275b2632f Signed-off-by: Charles J Archer <[email protected]> diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c index dce84d0..7ccae8e 100644 --- a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c +++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c @@ -233,7 +233,7 @@ static inline int MPID_nem_ofi_preposted_callback(cq_tagged_entry_t * wc, MPID_R REQ_OFI(new_rreq)->pack_buffer_size, gl_data.mr, VC_OFI(vc)->direct_addr, - MPID_MSG_DATA, 0, &(REQ_OFI(new_rreq)->ofi_context)), trecv); + wc->tag | MPID_MSG_CTS | MPID_MSG_DATA, 0, &(REQ_OFI(new_rreq)->ofi_context)), trecv); MPID_nem_ofi_create_req(&sreq, 1); sreq->dev.OnDataAvail = NULL; @@ -245,7 +245,7 @@ static inline int MPID_nem_ofi_preposted_callback(cq_tagged_entry_t * wc, MPID_R 0, gl_data.mr, VC_OFI(vc)->direct_addr, - MPID_MSG_CTS, &(REQ_OFI(sreq)->ofi_context)), tsend); + wc->tag | MPID_MSG_CTS, &(REQ_OFI(sreq)->ofi_context)), tsend); MPIU_Assert(gl_data.persistent_req == rreq); rreq->dev.user_count = 0; diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_msg.c b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_msg.c index fe5ddae..db64284 100644 --- a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_msg.c +++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_msg.c @@ -84,7 +84,7 @@ 0, \ gl_data.mr, \ VC_OFI(vc)->direct_addr, \ - MPID_MSG_CTS, \ + match_bits | MPID_MSG_CTS, \ 0, /* Exact tag match, no ignore bits */ \ &(REQ_OFI(cts_req)->ofi_context)),trecv); \ if (gl_data.api_set == API_SET_1){ \ @@ -123,17 +123,17 @@ static int MPID_nem_ofi_data_callback(cq_tagged_entry_t * wc, MPID_Request * sre uint64_t tag = 0; BEGIN_FUNC(FCNAME); switch (wc->tag & MPID_PROTOCOL_MASK) { - case MPID_MSG_CTS: + case MPID_MSG_CTS | MPID_MSG_RTS: vc = REQ_OFI(sreq)->vc; FI_RC_RETRY(fi_tsend(gl_data.endpoint, REQ_OFI(sreq)->pack_buffer, REQ_OFI(sreq)->pack_buffer_size, gl_data.mr, VC_OFI(vc)->direct_addr, - MPID_MSG_DATA, (void *) &(REQ_OFI(sreq)->ofi_context)), tsend); + wc->tag | MPID_MSG_DATA, (void *) &(REQ_OFI(sreq)->ofi_context)), tsend); MPIDI_CH3U_Request_complete(sreq); break; - case MPID_MSG_DATA: + case MPID_MSG_CTS | MPID_MSG_RTS | MPID_MSG_DATA: if (REQ_OFI(sreq)->pack_buffer) MPIU_Free(REQ_OFI(sreq)->pack_buffer); diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tag_layout.h b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tag_layout.h index e6492d5..33a5d6d 100644 --- a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tag_layout.h +++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tag_layout.h @@ -19,12 +19,12 @@ #define MPID_PGID_MASK (0xFFFFFFFF00000000ULL) #define MPID_PSOURCE_MASK (0x000000000000FFFFULL) #define MPID_PORT_NAME_MASK (0x000000000000FFFFULL) -#define MPID_SYNC_SEND (0x0000000010000000ULL) -#define MPID_SYNC_SEND_ACK (0x0000000020000000ULL) -#define MPID_MSG_RTS (0x0000000030000000ULL) -#define MPID_MSG_CTS (0x0000000040000000ULL) -#define MPID_MSG_DATA (0x0000000050000000ULL) -#define MPID_CONN_REQ (0x0000000060000000ULL) +#define MPID_SYNC_SEND (0x0000000080000000ULL) +#define MPID_SYNC_SEND_ACK (0x0000000090000000ULL) +#define MPID_MSG_RTS (0x0000000010000000ULL) +#define MPID_MSG_CTS (0x0000000020000000ULL) +#define MPID_MSG_DATA (0x0000000040000000ULL) +#define MPID_CONN_REQ (0x00000000A0000000ULL) #define MPID_SOURCE_SHIFT (48) #define MPID_CTXID_SHIFT (32) #define MPID_PGID_SHIFT (32) http://git.mpich.org/mpich.git/commitdiff/83b2816f3eb8e5b00831d42193b1c5f158... commit 83b2816f3eb8e5b00831d42193b1c5f158b5b90b Author: Jithin Jose <[email protected]> Date: Fri Jun 5 13:38:39 2015 -0700 Handle error-event for fi_cancel Change-Id: I25d9c8e80329dc185ee89da9fa1d8d9f54ea493e Signed-off-by: Jithin Jose <[email protected]> Signed-off-by: Charles J Archer <[email protected]> diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c index 34d85ec..3ca9a57 100644 --- a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c +++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c @@ -106,6 +106,13 @@ int MPID_nem_ofi_poll(int in_blocking_poll) mpi_errno = MPI_ERR_OTHER; } } + else if (error.err == FI_ECANCELED) { + req = context_to_req(error.op_context); + MPIR_STATUS_SET_CANCEL_BIT(req->status, TRUE); + } + else { + mpi_errno = MPI_ERR_OTHER; + } } else { MPIU_ERR_CHKANDJUMP4(1, mpi_errno, MPI_ERR_OTHER, "**ofi_poll", diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tagged.c b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tagged.c index cab6c11..875d6d7 100644 --- a/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tagged.c +++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_tagged.c @@ -75,6 +75,13 @@ static inline int MPID_nem_ofi_send_callback(cq_tagged_entry_t * wc ATTRIBUTE((u ret = fi_cancel((fid_t)gl_data.endpoint, \ &(REQ_OFI(req)->ofi_context)); \ if (ret == 0) { \ + while (!MPIR_STATUS_GET_CANCEL_BIT(req->status)) { \ + if ((mpi_errno = MPID_nem_ofi_poll(MPID_NONBLOCKING_POLL)) != \ + MPI_SUCCESS) { \ + MPIR_STATUS_SET_CANCEL_BIT(req->status, FALSE); \ + return mpi_errno; \ + } \ + } \ MPIR_STATUS_SET_CANCEL_BIT(req->status, TRUE); \ } else { \ MPIR_STATUS_SET_CANCEL_BIT(req->status, FALSE); \ ----------------------------------------------------------------------- Summary of changes: src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c | 4 ++-- src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_msg.c | 8 ++++---- .../ch3/channels/nemesis/netmod/ofi/ofi_progress.c | 7 +++++++ .../channels/nemesis/netmod/ofi/ofi_tag_layout.h | 12 ++++++------ .../ch3/channels/nemesis/netmod/ofi/ofi_tagged.c | 7 +++++++ 5 files changed, 26 insertions(+), 12 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org