[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2a2-256-g17d18f6
Service Account
noreply at mpich.org
Fri Mar 6 15:18:44 CST 2015
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 17d18f6143e3d2bbe1339156f95262a0eb7e2f36 (commit)
via 13a7338641bccb52e30f6cc8c5f504344dde56c7 (commit)
from e67dacae82e85c9613228a08bf49a666f316a7f8 (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/17d18f6143e3d2bbe1339156f95262a0eb7e2f36
commit 17d18f6143e3d2bbe1339156f95262a0eb7e2f36
Author: Norio yamaguchi <norio.yamaguchi at riken.jp>
Date: Wed Mar 4 16:59:39 2015 +0900
Bug-fix : leak mutex unlock in netmod-IB
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_malloc.c b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_malloc.c
index 569b4a7..d2b679e 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_malloc.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_malloc.c
@@ -314,8 +314,10 @@ void *ib_malloc_hook(size_t size, const void *caller)
pow = powoftwo(size);
- if (pow < 0 || pow >= ARRAY_SIZE)
+ if (pow < 0 || pow >= ARRAY_SIZE) {
+ pthread_mutex_unlock(&mutex);
return NULL;
+ }
if (is_list_empty(&arena_flist[pow])) {
char *tmp;
http://git.mpich.org/mpich.git/commitdiff/13a7338641bccb52e30f6cc8c5f504344dde56c7
commit 13a7338641bccb52e30f6cc8c5f504344dde56c7
Author: Norio yamaguchi <norio.yamaguchi at riken.jp>
Date: Wed Mar 4 15:00:36 2015 +0900
Fix implementation of RMA in netmod-IB
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_impl.h b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_impl.h
index 576c61f..bfa0a3f 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_impl.h
+++ b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_impl.h
@@ -721,6 +721,7 @@ typedef enum MPID_nem_ib_pkt_subtype {
#if 0 /* modification of mpid_nem_lmt.c is required */
MPIDI_NEM_IB_PKT_LMT_RTS,
#endif
+ MPIDI_NEM_IB_PKT_RMA_LMT_RTS,
MPIDI_NEM_IB_PKT_PUT,
MPIDI_NEM_IB_PKT_ACCUMULATE,
MPIDI_NEM_IB_PKT_GET,
@@ -795,6 +796,10 @@ int MPID_nem_ib_pkt_RTS_handler(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
MPIDI_msg_sz_t * buflen /* out */ ,
MPID_Request ** rreqp /* out */);
#endif
+int MPID_nem_ib_PktHandler_rma_lmt_rts(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
+ MPIDI_msg_sz_t * buflen /* out */ ,
+ MPID_Request ** rreqp /* out */);
+#if 0
int MPID_nem_ib_PktHandler_Put(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
MPIDI_msg_sz_t * buflen /* out */ ,
MPID_Request ** rreqp /* out */);
@@ -807,6 +812,7 @@ int MPID_nem_ib_PktHandler_Get(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
int MPID_nem_ib_PktHandler_GetResp(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
MPIDI_msg_sz_t * buflen /* out */ ,
MPID_Request ** rreqp /* out */);
+#endif
int MPID_nem_ib_PktHandler_lmt_done(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
MPIDI_msg_sz_t * buflen, MPID_Request ** rreqp);
int MPID_nem_ib_pkt_GET_DONE_handler(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_init.c b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_init.c
index a8382fa..b7adeab 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_init.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_init.c
@@ -954,10 +954,13 @@ int MPID_nem_ib_vc_init(MPIDI_VC_t * vc)
#if 0 /* modification of mpid_nem_lmt.c is required */
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_LMT_RTS] = MPID_nem_ib_pkt_RTS_handler;
#endif
+ MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_RMA_LMT_RTS] = MPID_nem_ib_PktHandler_rma_lmt_rts;
+#if 0
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_PUT] = MPID_nem_ib_PktHandler_Put;
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_GET] = MPID_nem_ib_PktHandler_Get;
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_GET_RESP] = MPID_nem_ib_PktHandler_GetResp;
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_ACCUMULATE] = MPID_nem_ib_PktHandler_Accumulate;
+#endif
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_LMT_GET_DONE] = MPID_nem_ib_pkt_GET_DONE_handler;
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_LMT_RTS] = MPID_nem_ib_pkt_RTS_handler;
MPID_nem_ib_pkt_handler[MPIDI_NEM_IB_PKT_REQ_SEQ_NUM] = MPID_nem_ib_PktHandler_req_seq_num;
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_poll.c b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_poll.c
index 0a11fcc..fa2f3c9 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_poll.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_poll.c
@@ -154,7 +154,8 @@ int MPID_nem_ib_drain_scq(int dont_call_progress)
if (
//req_type == MPIDI_REQUEST_TYPE_SEND
(req_type == MPIDI_REQUEST_TYPE_SEND || req_type == MPIDI_REQUEST_TYPE_RSEND ||
- req_type == MPIDI_REQUEST_TYPE_RECV || req_type == MPIDI_REQUEST_TYPE_SSEND)
+ req_type == MPIDI_REQUEST_TYPE_RECV || req_type == MPIDI_REQUEST_TYPE_SSEND ||
+ req_type == MPIDI_REQUEST_TYPE_GET_ACCUM_RESP)
&& msg_type == MPIDI_REQUEST_EAGER_MSG) {
dprintf("drain_scq,send/recv,eager,req_type=%d,,comm=%p,opcode=%d\n", req_type,
req->comm, cqe[i].opcode);
@@ -214,9 +215,12 @@ int MPID_nem_ib_drain_scq(int dont_call_progress)
(VC_FIELD(req->ch.vc, pending_sends)) -= 1;
- /* as in the template */
reqFn = req->dev.OnDataAvail;
- if (!reqFn) {
+ if (*req->cc_ptr == 2 && reqFn == MPIDI_CH3_ReqHandler_ReqOpsComplete) {
+ MPIDI_CH3U_Request_complete(req);
+ }
+ /* as in the template */
+ else if (!reqFn) {
MPIDI_CH3U_Request_complete(req);
dprintf("drain_scq,complete,req=%p\n", req);
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, ".... complete");
@@ -304,9 +308,12 @@ int MPID_nem_ib_drain_scq(int dont_call_progress)
(VC_FIELD(req->ch.vc, pending_sends)) -= 1;
- /* as in the template */
reqFn = req->dev.OnDataAvail;
- if (!reqFn) {
+ if (*req->cc_ptr == 2 && reqFn == MPIDI_CH3_ReqHandler_GetSendComplete) {
+ MPIDI_CH3U_Request_complete(req);
+ }
+ /* as in the template */
+ else if (!reqFn) {
MPIDI_CH3U_Request_complete(req);
dprintf("drain_scq,complete,req=%p\n", req);
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, ".... complete");
@@ -450,6 +457,7 @@ int MPID_nem_ib_drain_scq(int dont_call_progress)
//MPID_NEM_IB_SEND_PROGRESS_POLLINGSET
//}
}
+#if 0
else if (req_type == 13 && cqe[i].opcode == IBV_WC_RDMA_READ) {
MPID_nem_ib_vc_area *vc_ib = VC_IB(req->ch.vc);
@@ -633,6 +641,28 @@ int MPID_nem_ib_drain_scq(int dont_call_progress)
MPIU_Free(req_wrap);
}
+#endif
+ else if (req_type == MPIDI_REQUEST_TYPE_SEND && msg_type == MPIDI_REQUEST_RNDV_MSG &&
+ cqe[i].opcode == IBV_WC_RDMA_READ) {
+ MPID_nem_ib_vc_area *vc_ib = VC_IB(req->ch.vc);
+
+ if (req_wrap->mf == MPID_NEM_IB_LMT_LAST_PKT) {
+ MPID_nem_handle_pkt(req->ch.vc, (char *) REQ_FIELD(req, lmt_pack_buf),
+ (MPIDI_msg_sz_t) (sizeof(MPIDI_CH3_Pkt_t) +
+ req->ch.lmt_data_sz));
+
+ MPID_nem_ib_lmt_send_PKT_LMT_DONE(req->ch.vc, req);
+
+ MPIU_Free(REQ_FIELD(req, lmt_pack_buf));
+ MPIDI_CH3U_Request_complete(req);
+ }
+
+ /* decrement the number of entries in IB command queue */
+ vc_ib->ibcom->ncom -= 1;
+ MPID_nem_ib_ncqe -= 1;
+
+ MPIU_Free(req_wrap);
+ }
else {
printf("drain_scq,unknown kind=%d,req_type=%d,msg_type=%d\n", kind, req_type, msg_type);
assert(0);
@@ -1795,7 +1825,97 @@ int MPID_nem_ib_pkt_RTS_handler(MPIDI_VC_t * vc,
}
#endif
-#if 1
+#undef FUNCNAME
+#define FUNCNAME MPID_nem_ib_PktHandler_rma_lmt_rts
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+int MPID_nem_ib_PktHandler_rma_lmt_rts(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
+ MPIDI_msg_sz_t * buflen /* out */ ,
+ MPID_Request ** rreqp /* out */)
+{
+ MPID_nem_ib_vc_area *vc_ib = VC_IB(vc);
+ int mpi_errno = MPI_SUCCESS;
+ MPID_Request *req = NULL;
+ MPIDI_CH3_Pkt_t *pkt_hdr = (MPIDI_CH3_Pkt_t *) ((uint8_t *) pkt + sizeof(MPIDI_CH3_Pkt_t));
+ MPID_nem_ib_rma_lmt_cookie_t *s_cookie_buf =
+ (MPID_nem_ib_rma_lmt_cookie_t *) ((uint8_t *) pkt + sizeof(MPIDI_CH3_Pkt_t) +
+ sizeof(MPIDI_CH3_Pkt_t));
+
+ void *write_to_buf;
+
+ MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_IB_PKTHANDLER_RMA_LMT_RTS);
+ MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_IB_PKTHANDLER_RMA_LMT_RTS);
+
+ req = MPID_Request_create();
+ MPIU_Object_set_ref(req, 1); /* decrement only in drain_scq ? */
+
+ req->ch.lmt_data_sz = s_cookie_buf->len;
+ req->ch.lmt_req_id = s_cookie_buf->sender_req_id;
+
+ REQ_FIELD(req, lmt_pack_buf) =
+ MPIU_Malloc(sizeof(MPIDI_CH3_Pkt_t) + (size_t) req->ch.lmt_data_sz);
+ MPIU_ERR_CHKANDJUMP(!REQ_FIELD(req, lmt_pack_buf), mpi_errno, MPI_ERR_OTHER, "**outofmemory");
+
+ memcpy(REQ_FIELD(req, lmt_pack_buf), pkt_hdr, sizeof(MPIDI_CH3_Pkt_t));
+
+ /* RDMA READ buffer address */
+ write_to_buf = (void *) ((char *) REQ_FIELD(req, lmt_pack_buf) + sizeof(MPIDI_CH3_Pkt_t));
+
+ /* stash vc for ib_poll */
+ req->ch.vc = vc;
+
+ REQ_FIELD(req, lmt_tail) = s_cookie_buf->tail;
+ MPIDI_Request_set_type(req, MPIDI_REQUEST_TYPE_SEND); // Set dummy type for ib_drain_scq
+
+ /* try to issue RDMA-read command */
+ int slack = 1; /* slack for control packet bringing sequence number */
+ if (MPID_nem_ib_sendq_empty(vc_ib->sendq) &&
+ vc_ib->ibcom->ncom < MPID_NEM_IB_COM_MAX_SQ_CAPACITY - slack &&
+ MPID_nem_ib_ncqe < MPID_NEM_IB_COM_MAX_CQ_CAPACITY - slack) {
+ MPIDI_Request_set_msg_type(req, MPIDI_REQUEST_RNDV_MSG);
+ mpi_errno =
+ MPID_nem_ib_lmt_start_recv_core(req, s_cookie_buf->addr, s_cookie_buf->rkey,
+ s_cookie_buf->len, write_to_buf,
+ s_cookie_buf->max_msg_sz, 1);
+ if (mpi_errno) {
+ MPIU_ERR_POP(mpi_errno);
+ }
+ }
+ else {
+ /* enqueue command into send_queue */
+ dprintf("lmt_start_recv, enqueuing,sendq_empty=%d,ncom=%d,ncqe=%d\n",
+ MPID_nem_ib_sendq_empty(vc_ib->sendq),
+ vc_ib->ibcom->ncom < MPID_NEM_IB_COM_MAX_SQ_CAPACITY,
+ MPID_nem_ib_ncqe < MPID_NEM_IB_COM_MAX_CQ_CAPACITY);
+
+ /* make raddr, (sz is in rreq->ch.lmt_data_sz), rkey, (user_buf is in req->dev.user_buf) survive enqueue, free cookie, dequeue */
+ REQ_FIELD(req, lmt_raddr) = s_cookie_buf->addr;
+ REQ_FIELD(req, lmt_rkey) = s_cookie_buf->rkey;
+ REQ_FIELD(req, lmt_write_to_buf) = write_to_buf;
+ REQ_FIELD(req, lmt_szsend) = s_cookie_buf->len;
+ REQ_FIELD(req, max_msg_sz) = s_cookie_buf->max_msg_sz;
+ REQ_FIELD(req, last) = 1; /* not support segmentation */
+
+ /* set for send_progress */
+ MPIDI_Request_set_msg_type(req, MPIDI_REQUEST_RNDV_MSG);
+ req->kind = MPID_REQUEST_RECV;
+
+ MPID_nem_ib_sendq_enqueue(&vc_ib->sendq, req);
+ }
+
+ /* prefix + header + data */
+ *buflen =
+ sizeof(MPIDI_CH3_Pkt_t) + sizeof(MPIDI_CH3_Pkt_t) + sizeof(MPID_nem_ib_rma_lmt_cookie_t);
+ *rreqp = NULL;
+
+ fn_exit:
+ MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_IB_PKTHANDLER_RMA_LMT_RTS);
+ return mpi_errno;
+ fn_fail:
+ goto fn_exit;
+}
+
+#if 0
/* packet handler for wrapper packet of MPIDI_CH3_PKT_PUT */
/* see MPIDI_CH3_PktHandler_EagerSend (in src/mpid/ch3/src/ch3u_rma_sync.c) */
#undef FUNCNAME
@@ -1928,6 +2048,7 @@ int MPID_nem_ib_PktHandler_Put(MPIDI_VC_t * vc, MPIDI_CH3_Pkt_t * pkt,
}
#endif
+#if 0
/* packet handler for wrapper packet of MPIDI_CH3_PKT_ACCUMULATE */
/* see MPIDI_CH3_PktHandler_Accumulate (in src/mpid/ch3/src/ch3u_rma_sync.c) */
#undef FUNCNAME
@@ -2072,7 +2193,9 @@ int MPID_nem_ib_PktHandler_Accumulate(MPIDI_VC_t * vc,
fn_fail:
goto fn_exit;
}
+#endif
+#if 0
/* packet handler for wrapper packet of MPIDI_CH3_PKT_GET */
/* see MPIDI_CH3_PktHandler_Get (in src/mpid/ch3/src/ch3u_rma_sync.c) */
#undef FUNCNAME
@@ -2227,6 +2350,7 @@ int MPID_nem_ib_PktHandler_GetResp(MPIDI_VC_t * vc,
fn_fail:
goto fn_exit;
}
+#endif
/* MPI_Isend set req-type to MPIDI_REQUEST_TYPE_RECV */
#undef FUNCNAME
@@ -2565,7 +2689,20 @@ int MPID_nem_ib_pkt_rma_lmt_getdone(MPIDI_VC_t * vc,
MPIU_Free(REQ_FIELD(req, lmt_pack_buf));
}
}
- MPIDI_CH3U_Request_complete(req);
+
+ int (*reqFn) (MPIDI_VC_t *, MPID_Request *, int *);
+ reqFn = req->dev.OnDataAvail;
+
+ if (*req->cc_ptr == 1 &&
+ (reqFn == MPIDI_CH3_ReqHandler_ReqOpsComplete
+ || reqFn == MPIDI_CH3_ReqHandler_GetSendComplete)) {
+ MPIDI_VC_t *vc = req->ch.vc;
+ int complete = 0;
+ mpi_errno = reqFn(vc, req, &complete);
+ }
+ else {
+ MPIDI_CH3U_Request_complete(req);
+ }
*rreqp = NULL;
fn_exit:
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_send.c b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_send.c
index 0813a47..fe43e85 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ib/ib_send.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/ib/ib_send.c
@@ -222,22 +222,28 @@ static int MPID_nem_ib_iSendContig_core(MPIDI_VC_t * vc, MPID_Request * sreq, vo
s_data = data;
s_data_sz = data_sz;
+#if 0
if (hdr &&
((((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_PUT)
|| (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_GET_RESP)
|| (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_ACCUMULATE))) {
+#endif
/* If request length is too long, create LMT packet */
if (MPID_NEM_IB_NETMOD_HDR_SIZEOF(vc_ib->ibcom->local_ringbuf_type)
+ sizeof(MPIDI_CH3_Pkt_t) + data_sz
> MPID_NEM_IB_COM_RDMABUF_SZSEG - sizeof(MPID_nem_ib_netmod_trailer_t)) {
pkt_netmod.type = MPIDI_NEM_PKT_NETMOD;
+#if 0
if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_PUT)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_PUT;
else if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_GET_RESP)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_GET_RESP;
else if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_ACCUMULATE)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_ACCUMULATE;
+#else
+ pkt_netmod.subtype = MPIDI_NEM_IB_PKT_RMA_LMT_RTS;
+#endif
void *write_from_buf = data;
@@ -245,8 +251,10 @@ static int MPID_nem_ib_iSendContig_core(MPIDI_VC_t * vc, MPID_Request * sreq, vo
MPID_nem_ib_com_get_info_conn(vc_ib->sc->fd, MPID_NEM_IB_COM_INFOKEY_PATTR_MAX_MSG_SZ,
&max_msg_sz, sizeof(uint32_t));
+#if 0
/* RMA : Netmod IB supports only smaller size than max_msg_sz. */
MPIU_Assert(data_sz <= max_msg_sz);
+#endif
MPID_nem_ib_rma_lmt_cookie_t *s_cookie_buf = (MPID_nem_ib_rma_lmt_cookie_t *) MPIU_Malloc(sizeof(MPID_nem_ib_rma_lmt_cookie_t));
@@ -281,7 +289,9 @@ static int MPID_nem_ib_iSendContig_core(MPIDI_VC_t * vc, MPID_Request * sreq, vo
int incomplete;
MPIDI_CH3U_Request_increment_cc(sreq, &incomplete); // decrement in drain_scq and pkt_rma_lmt_getdone
}
+#if 0
}
+#endif
/* packet handlers including MPIDI_CH3_PktHandler_EagerSend and MPID_nem_handle_pkt assume this */
hdr_sz = sizeof(MPIDI_CH3_Pkt_t);
@@ -785,22 +795,28 @@ static int MPID_nem_ib_SendNoncontig_core(MPIDI_VC_t * vc, MPID_Request * sreq,
data = (void *)REQ_FIELD(sreq, lmt_pack_buf);
data_sz = last;
+#if 0
if (hdr &&
((((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_PUT)
|| (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_GET_RESP)
|| (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_ACCUMULATE))) {
+#endif
/* If request length is too long, create LMT packet */
if ( MPID_NEM_IB_NETMOD_HDR_SIZEOF(vc_ib->ibcom->local_ringbuf_type)
+ sizeof(MPIDI_CH3_Pkt_t) + sreq->dev.segment_size - sreq->dev.segment_first
> MPID_NEM_IB_COM_RDMABUF_SZSEG - sizeof(MPID_nem_ib_netmod_trailer_t)) {
pkt_netmod.type = MPIDI_NEM_PKT_NETMOD;
+#if 0
if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_PUT)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_PUT;
else if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_GET_RESP)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_GET_RESP;
else if (((MPIDI_CH3_Pkt_t *) hdr)->type == MPIDI_CH3_PKT_ACCUMULATE)
pkt_netmod.subtype = MPIDI_NEM_IB_PKT_ACCUMULATE;
+#else
+ pkt_netmod.subtype = MPIDI_NEM_IB_PKT_RMA_LMT_RTS;
+#endif
void *write_from_buf = REQ_FIELD(sreq, lmt_pack_buf);
@@ -808,8 +824,10 @@ static int MPID_nem_ib_SendNoncontig_core(MPIDI_VC_t * vc, MPID_Request * sreq,
MPID_nem_ib_com_get_info_conn(vc_ib->sc->fd, MPID_NEM_IB_COM_INFOKEY_PATTR_MAX_MSG_SZ,
&max_msg_sz, sizeof(uint32_t));
+#if 0
/* RMA : Netmod IB supports only smaller size than max_msg_sz. */
MPIU_Assert(data_sz <= max_msg_sz);
+#endif
MPID_nem_ib_rma_lmt_cookie_t *s_cookie_buf = (MPID_nem_ib_rma_lmt_cookie_t *) MPIU_Malloc(sizeof(MPID_nem_ib_rma_lmt_cookie_t));
@@ -844,7 +862,9 @@ static int MPID_nem_ib_SendNoncontig_core(MPIDI_VC_t * vc, MPID_Request * sreq,
int incomplete;
MPIDI_CH3U_Request_increment_cc(sreq, &incomplete); // decrement in drain_scq and pkt_rma_lmt_getdone
}
+#if 0
}
+#endif
/* packet handlers assume this */
hdr_sz = sizeof(MPIDI_CH3_Pkt_t);
-----------------------------------------------------------------------
Summary of changes:
src/mpid/ch3/channels/nemesis/netmod/ib/ib_impl.h | 6 +
src/mpid/ch3/channels/nemesis/netmod/ib/ib_init.c | 3 +
.../ch3/channels/nemesis/netmod/ib/ib_malloc.c | 4 +-
src/mpid/ch3/channels/nemesis/netmod/ib/ib_poll.c | 151 +++++++++++++++++++-
src/mpid/ch3/channels/nemesis/netmod/ib/ib_send.c | 20 +++
5 files changed, 176 insertions(+), 8 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list