Commit 94c1d4e4 authored by Darius Buntinas's avatar Darius Buntinas
Browse files

[svn-r10475] added support for mpich control messages

parent 00a081ca
......@@ -13,6 +13,7 @@ lib_lib@MPILIBNAME@_la_SOURCES += \
src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c \
src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_probe.c \
src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c \
src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm_send.c \
src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_send.c
noinst_HEADERS += \
......
......@@ -34,3 +34,5 @@
**ptlget %s:PtlGet() failed (%s)
**eqdropped:Event queue overflowed
**badbusinesscard:Invalid business card
**ptlni_fail:communication failure
**ptlni_fail %s %s:communication failure event=%s fail_type=%s
......@@ -16,6 +16,7 @@
extern ptl_handle_ni_t MPIDI_nem_ptl_ni;
extern ptl_pt_index_t MPIDI_nem_ptl_pt;
extern ptl_pt_index_t MPIDI_nem_ptl_get_pt; /* portal for gets by receiver */
extern ptl_pt_index_t MPIDI_nem_ptl_control_pt; /* portal for MPICH control messages */
extern ptl_handle_eq_t MPIDI_nem_ptl_eq;
......@@ -84,6 +85,7 @@ typedef struct {
typedef struct {
ptl_process_t id;
ptl_pt_index_t pt;
ptl_pt_index_t ptg;
ptl_pt_index_t ptc;
int id_initialized; /* TRUE iff id and pt have been initialized */
MPIDI_msg_sz_t num_queued_sends; /* number of reqs for this vc in sendq */
......@@ -98,26 +100,20 @@ typedef struct {
63 single/multiple
62 large/small
61 ssend
32-60 seqnum for large messages (29 bits)
0-31 length
0-60 length
Note: This means we support no more than 2^24 processes.
*/
#define NPTL_LENGTH_OFFSET 0
#define NPTL_SEQNUM_OFFSET 32
#define NPTL_SSEND ((ptl_hdr_data_t)1<<61)
#define NPTL_LARGE ((ptl_hdr_data_t)1<<62)
#define NPTL_MULTIPLE ((ptl_hdr_data_t)1<<63)
#define NPTL_LENGTH_MASK ((((ptl_hdr_data_t)1<<32)-1)<<NPTL_LENGTH_OFFSET)
#define NPTL_SEQNUM_MASK ((((ptl_hdr_data_t)1<<29)-1)<<NPTL_SEQNUM_OFFSET)
#define NPTL_LENGTH_MASK (((ptl_hdr_data_t)1<<61)-1)
#define NPTL_HEADER(flags_, large_seqnum_, length_) ((flags_) | \
((ptl_hdr_data_t)(large_seqnum_))<<NPTL_SEQNUM_OFFSET | \
((ptl_hdr_data_t)(length_))<<NPTL_LENGTH_OFFSET)
#define NPTL_HEADER(flags_, length_) ((flags_) | (ptl_hdr_data_t)(length_))
#define NPTL_HEADER_GET_LENGTH(hdr_) ((hdr_) & NPTL_LENGTH_MASK)
#define NPTL_HEADER_GET_SEQNUM(hdr_) (((hdr_) & NPTL_SEQNUM_MASK)>>NPTL_SEQNUM_OFFSET)
#define NPTL_HEADER_GET_LENGTH(hdr_) (((hdr_) & NPTL_LENGTH_MASK)>>NPTL_LENGTH_OFFSET)
#define NPTL_MAX_LENGTH NPTL_LENGTH_MASK
/* The comm_world rank of the sender is stored in the match_bits, but they are
ignored when matching.
......@@ -143,9 +139,9 @@ typedef struct {
#define NPTL_MATCH_GET_CTX(match_bits_) (((match_bits_) & NPTL_MATCH_CTX_MASK) >> NPTL_MATCH_CTX_OFFSET)
#define NPTL_MATCH_GET_TAG(match_bits_) ((match_bits_) >> NPTL_MATCH_TAG_OFFSET)
int MPID_nem_ptl_send_init(void);
int MPID_nem_ptl_send_finalize(void);
int MPID_nem_ptl_ev_send_handler(const ptl_event_t *e);
int MPID_nem_ptl_nm_init(void);
int MPID_nem_ptl_nm_finalize(void);
int MPID_nem_ptl_nm_event_handler(const ptl_event_t *e);
int MPID_nem_ptl_sendq_complete_with_error(MPIDI_VC_t *vc, int req_errno);
int MPID_nem_ptl_SendNoncontig(MPIDI_VC_t *vc, MPID_Request *sreq, void *hdr, MPIDI_msg_sz_t hdr_sz);
int MPID_nem_ptl_iStartContigMsg(MPIDI_VC_t *vc, void *hdr, MPIDI_msg_sz_t hdr_sz, void *data, MPIDI_msg_sz_t data_sz,
......@@ -156,7 +152,8 @@ int MPID_nem_ptl_poll_init(void);
int MPID_nem_ptl_poll_finalize(void);
int MPID_nem_ptl_poll(int is_blocking_poll);
int MPID_nem_ptl_vc_terminated(MPIDI_VC_t *vc);
int MPID_nem_ptl_get_id_from_bc(const char *business_card, ptl_process_t *id, ptl_pt_index_t *pt, ptl_pt_index_t *ptc);
int MPID_nem_ptl_get_id_from_bc(const char *business_card, ptl_process_t *id, ptl_pt_index_t *pt, ptl_pt_index_t *ptg,
ptl_pt_index_t *ptc);
void MPI_nem_ptl_pack_byte(MPID_Segment *segment, MPI_Aint first, MPI_Aint last, void *buf,
MPID_nem_ptl_pack_overflow_t *overflow);
int MPID_nem_ptl_unpack_byte(MPID_Segment *segment, MPI_Aint first, MPI_Aint last, void *buf,
......@@ -195,11 +192,11 @@ const char *MPID_nem_ptl_strlist(ptl_list_t list);
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, "PtlPut: md=%s data_sz=%lu pg_rank=%d", md_, data_sz_, pg_rank_)); \
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, " tag=%#lx ctx=%#lx rank=%ld match=%#lx", \
NPTL_MATCH_GET_TAG(match_), NPTL_MATCH_GET_CTX(match_), NPTL_MATCH_GET_RANK(match_), match_)); \
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, " flags=%c%c%c seqnum=%ld data_sz=%ld header=%#lx", \
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, " flags=%c%c%c data_sz=%ld header=%#lx", \
header_ & NPTL_SSEND ? 'S':' ', \
header_ & NPTL_LARGE ? 'L':' ', \
header_ & NPTL_MULTIPLE ? 'M':' ', \
NPTL_HEADER_GET_SEQNUM(header_), NPTL_HEADER_GET_LENGTH(header_), header_)); \
NPTL_HEADER_GET_LENGTH(header_), header_)); \
\
} while(0)
......
......@@ -15,10 +15,12 @@
#define NID_KEY "NID"
#define PID_KEY "PID"
#define PTI_KEY "PTI"
#define PTIG_KEY "PTIG"
#define PTIC_KEY "PTIC"
ptl_handle_ni_t MPIDI_nem_ptl_ni;
ptl_pt_index_t MPIDI_nem_ptl_pt;
ptl_pt_index_t MPIDI_nem_ptl_get_pt; /* portal for gets by receiver */
ptl_pt_index_t MPIDI_nem_ptl_control_pt; /* portal for MPICH control messages */
ptl_handle_eq_t MPIDI_nem_ptl_eq;
ptl_handle_md_t MPIDI_nem_ptl_global_md;
......@@ -112,9 +114,15 @@ static int ptl_init(MPIDI_PG_t *pg_p, int pg_rank, char **bc_val_p, int *val_max
PTL_PT_ANY, &MPIDI_nem_ptl_pt);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlptalloc", "**ptlptalloc %s", MPID_nem_ptl_strerror(ret));
/* allocate portal for large messages where receiver does a get */
ret = PtlPTAlloc(MPIDI_nem_ptl_ni, PTL_PT_ONLY_USE_ONCE | PTL_PT_ONLY_TRUNCATE | PTL_PT_FLOWCTRL, MPIDI_nem_ptl_eq,
PTL_PT_ANY, &MPIDI_nem_ptl_get_pt);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlptalloc", "**ptlptalloc %s", MPID_nem_ptl_strerror(ret));
/* allocate portal for MPICH control messages */
ret = PtlPTAlloc(MPIDI_nem_ptl_ni, PTL_PT_ONLY_TRUNCATE | PTL_PT_FLOWCTRL, MPIDI_nem_ptl_eq,
ret = PtlPTAlloc(MPIDI_nem_ptl_ni, PTL_PT_ONLY_USE_ONCE | PTL_PT_ONLY_TRUNCATE | PTL_PT_FLOWCTRL, MPIDI_nem_ptl_eq,
PTL_PT_ANY, &MPIDI_nem_ptl_control_pt);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlptalloc", "**ptlptalloc %s", MPID_nem_ptl_strerror(ret));
/* create an MD that covers all of memory */
md.start = 0;
......@@ -134,7 +142,7 @@ static int ptl_init(MPIDI_PG_t *pg_p, int pg_rank, char **bc_val_p, int *val_max
mpi_errno = MPID_nem_ptl_poll_init();
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
mpi_errno = MPID_nem_ptl_send_init();
mpi_errno = MPID_nem_ptl_nm_init();
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
fn_exit:
......@@ -156,7 +164,7 @@ static int ptl_finalize(void)
MPIDI_FUNC_ENTER(MPID_STATE_PTL_FINALIZE);
/* shut down other modules */
mpi_errno = MPID_nem_ptl_send_finalize();
mpi_errno = MPID_nem_ptl_nm_finalize();
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
mpi_errno = MPID_nem_ptl_poll_finalize();
......@@ -215,6 +223,12 @@ static int get_business_card(int my_rank, char **bc_val_p, int *val_max_sz_p)
MPIU_ERR_CHKANDJUMP(str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**buscard_len");
MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**buscard");
}
str_errno = MPIU_Str_add_binary_arg(bc_val_p, val_max_sz_p, PTIG_KEY, (char *)&MPIDI_nem_ptl_get_pt,
sizeof(MPIDI_nem_ptl_get_pt));
if (str_errno) {
MPIU_ERR_CHKANDJUMP(str_errno == MPIU_STR_NOMEM, mpi_errno, MPI_ERR_OTHER, "**buscard_len");
MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**buscard");
}
str_errno = MPIU_Str_add_binary_arg(bc_val_p, val_max_sz_p, PTIC_KEY, (char *)&MPIDI_nem_ptl_control_pt,
sizeof(MPIDI_nem_ptl_control_pt));
if (str_errno) {
......@@ -298,7 +312,7 @@ static int vc_destroy(MPIDI_VC_t *vc)
#define FUNCNAME MPID_nem_ptl_get_id_from_bc
#undef FCNAME
#define FCNAME MPIU_QUOTE(FUNCNAME)
int MPID_nem_ptl_get_id_from_bc(const char *business_card, ptl_process_t *id, ptl_pt_index_t *pt, ptl_pt_index_t *ptc)
int MPID_nem_ptl_get_id_from_bc(const char *business_card, ptl_process_t *id, ptl_pt_index_t *pt, ptl_pt_index_t *ptg, ptl_pt_index_t *ptc)
{
int mpi_errno = MPI_SUCCESS;
int ret;
......@@ -316,8 +330,11 @@ int MPID_nem_ptl_get_id_from_bc(const char *business_card, ptl_process_t *id, pt
ret = MPIU_Str_get_binary_arg(business_card, PTI_KEY, (char *)pt, sizeof(pt), &len);
MPIU_ERR_CHKANDJUMP(ret != MPIU_STR_SUCCESS || len != sizeof(*pt), mpi_errno, MPI_ERR_OTHER, "**badbusinesscard");
ret = MPIU_Str_get_binary_arg(business_card, PTIG_KEY, (char *)ptg, sizeof(ptg), &len);
MPIU_ERR_CHKANDJUMP(ret != MPIU_STR_SUCCESS || len != sizeof(*ptg), mpi_errno, MPI_ERR_OTHER, "**badbusinesscard");
ret = MPIU_Str_get_binary_arg(business_card, PTIC_KEY, (char *)ptc, sizeof(ptc), &len);
MPIU_ERR_CHKANDJUMP(ret != MPIU_STR_SUCCESS || len != sizeof(*pt), mpi_errno, MPI_ERR_OTHER, "**badbusinesscard");
MPIU_ERR_CHKANDJUMP(ret != MPIU_STR_SUCCESS || len != sizeof(*ptc), mpi_errno, MPI_ERR_OTHER, "**badbusinesscard");
fn_exit:
MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_PTL_GET_ID_FROM_BC);
......@@ -411,7 +428,7 @@ int MPID_nem_ptl_init_id(MPIDI_VC_t *vc)
mpi_errno = vc->pg->getConnInfo(vc->pg_rank, bc, val_max_sz, vc->pg);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
mpi_errno = MPID_nem_ptl_get_id_from_bc(bc, &vc_ptl->id, &vc_ptl->pt, &vc_ptl->ptc);
mpi_errno = MPID_nem_ptl_get_id_from_bc(bc, &vc_ptl->id, &vc_ptl->pt, &vc_ptl->ptg, &vc_ptl->ptc);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
vc_ptl->id_initialized = TRUE;
......
This diff is collapsed.
......@@ -6,18 +6,9 @@
#include "ptl_impl.h"
#define NUMBUFS 20
#define BUFLEN (sizeof(MPIDI_CH3_Pkt_t) + PTL_MAX_EAGER)
#define OVERFLOW_LENGTH (1024*1024)
#define NUM_OVERFLOW_ME 50
#if 0
static char recvbuf[BUFLEN][NUMBUFS];
static ptl_le_t recvbuf_le[NUMBUFS];
static ptl_handle_le_t recvbuf_le_handle[NUMBUFS];
#endif
static ptl_handle_me_t overflow_me_handle[NUM_OVERFLOW_ME];
static void *overflow_buf[NUM_OVERFLOW_ME];
......@@ -31,32 +22,11 @@ int MPID_nem_ptl_poll_init(void)
{
int mpi_errno = MPI_SUCCESS;
int i;
#if 0
int ret;
ptl_process_t id_any;
#endif
MPIU_CHKPMEM_DECL(NUM_OVERFLOW_ME);
MPIDI_STATE_DECL(MPID_STATE_MPID_NEM_PTL_POLL_INIT);
MPIDI_FUNC_ENTER(MPID_STATE_MPID_NEM_PTL_POLL_INIT);
#if 0
id_any.phys.pid = PTL_PID_ANY;
id_any.phys.nid = PTL_NID_ANY;
for (i = 0; i < NUMBUFS; ++i) {
recvbuf_le[i].start = recvbuf[i];
recvbuf_le[i].length = BUFLEN;
recvbuf_le[i].ct_handle = PTL_CT_NONE;
recvbuf_le[i].uid = PTL_UID_ANY;
recvbuf_le[i].options = (PTL_LE_OP_PUT | PTL_LE_USE_ONCE |
PTL_LE_EVENT_UNLINK_DISABLE | PTL_LE_EVENT_LINK_DISABLE);
ret = PtlLEAppend(MPIDI_nem_ptl_ni, MPIDI_nem_ptl_control_pt, &recvbuf_le[i], PTL_PRIORITY_LIST, (void *)(uint64_t)i,
&recvbuf_le_handle[i]);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlleappend", "**ptlleappend %s", MPID_nem_ptl_strerror(ret));
}
#endif
/* create overflow buffers */
for (i = 0; i < NUM_OVERFLOW_ME; ++i) {
MPIU_CHKPMEM_MALLOC(overflow_buf[i], void *, OVERFLOW_LENGTH, mpi_errno, "overflow buffer");
......@@ -97,13 +67,6 @@ int MPID_nem_ptl_poll_finalize(void)
MPIU_Free(overflow_buf[i]);
}
#if 0
for (i = 0; i < NUMBUFS; ++i) {
ret = PtlLEUnlink(recvbuf_le_handle[i]);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlleunlink", "**ptlleunlink %s", MPID_nem_ptl_strerror(ret));
}
#endif
fn_exit:
MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_PTL_POLL_FINALIZE);
return mpi_errno;
......@@ -175,6 +138,15 @@ int MPID_nem_ptl_poll(int is_blocking_poll)
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, "Received event %s ni_fail=%s list=%s user_ptr=%p hdr_data=%#lx",
MPID_nem_ptl_strevent(&event), MPID_nem_ptl_strnifail(event.ni_fail_type),
MPID_nem_ptl_strlist(event.ptl_list), event.user_ptr, event.hdr_data));
MPIU_ERR_CHKANDJUMP2(event.ni_fail_type != PTL_NI_OK && event.ni_fail_type != PTL_NI_NO_MATCH, mpi_errno, MPI_ERR_OTHER, "**ptlni_fail", "**ptlni_fail %s %s", MPID_nem_ptl_strevent(&event), MPID_nem_ptl_strnifail(event.ni_fail_type));
/* handle control messages */
if (event.pt_index == MPIDI_nem_ptl_control_pt) {
mpi_errno = MPID_nem_ptl_nm_event_handler(&event);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
goto fn_exit;
}
switch (event.type) {
case PTL_EVENT_PUT:
......@@ -203,61 +175,10 @@ int MPID_nem_ptl_poll(int is_blocking_poll)
/* ignore */
break;
default:
MPIDI_err_printf(FCNAME, "Received unexpected event type: %d %s", event.type, MPID_nem_ptl_strevent(&event));
MPIU_Error_printf("Received unexpected event type: %d %s", event.type, MPID_nem_ptl_strevent(&event));
MPIU_ERR_INTERNALANDJUMP(mpi_errno, "Unexpected event type");
}
}
#if 0 /* used for non-matching message passing */
switch (event.type) {
MPIDI_VC_t *vc;
case PTL_EVENT_PUT:
if (event.ni_fail_type) {
/* FIXME: handle comm failures */
printf("Message received with error (%d) from process %lu\n", event.ni_fail_type, (uint64_t)event.hdr_data);
assert(0);
}
/* FIXME: doesn't handle dynamic connections */
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, "Put received(size=%lu id=(%#x,%#x) pt=%#x)", event.rlength,
event.initiator.phys.nid, event.initiator.phys.pid, event.pt_index));
MPIDI_PG_Get_vc_set_active(MPIDI_Process.my_pg, (uint64_t)event.hdr_data, &vc);
mpi_errno = MPID_nem_handle_pkt(vc, event.start, event.rlength);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
assert(event.start == recvbuf[(uint64_t)event.user_ptr]);
ret = PtlLEAppend(MPIDI_nem_ptl_ni, MPIDI_nem_ptl_control_pt, &recvbuf_le[(uint64_t)event.user_ptr],
PTL_PRIORITY_LIST, event.user_ptr, &recvbuf_le_handle[(uint64_t)event.user_ptr]);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlmeappend", "**ptlmeappend %s", MPID_nem_ptl_strerror(ret));
break;
case PTL_EVENT_SEND:
if (event.ni_fail_type) {
/* FIXME: handle comm failures */
printf("Message send completed with error (%d)\n", event.ni_fail_type);
assert(0);
}
MPIU_DBG_MSG(CH3_CHANNEL, VERBOSE, "Send completed");
mpi_errno = MPID_nem_ptl_ev_send_handler(&event);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
break;
case PTL_EVENT_ACK:
if (event.ni_fail_type) {
/* FIXME: handle comm failures */
printf("ACK received with error (%d) sb=%p\n", event.ni_fail_type, event.user_ptr);
assert(0);
}
MPIU_DBG_MSG_FMT(CH3_CHANNEL, VERBOSE, (MPIU_DBG_FDEST, "ACK received sb=%p", event.user_ptr));
break;
default:
/* FIXME: figure out what other events to expect */
printf("Got unexpected event %d\n", event.type);
break;
}
}
#endif
fn_exit:
/* MPIDI_FUNC_EXIT(MPID_STATE_MPID_NEM_PTL_POLL); */
......
......@@ -216,7 +216,7 @@ static int handler_recv_dequeue_large(const ptl_event_t *e)
REQ_PTL(rreq)->event_handler = handler_recv_complete;
ret = PtlGet(MPIDI_nem_ptl_global_md, (ptl_size_t)rreq->dev.user_buf + PTL_LARGE_THRESHOLD, data_sz - PTL_LARGE_THRESHOLD,
vc_ptl->id, vc_ptl->ptc, NPTL_HEADER_GET_SEQNUM(e->hdr_data), 0, rreq);
vc_ptl->id, vc_ptl->ptg, e->match_bits, 0, rreq);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlget", "**ptlget %s", MPID_nem_ptl_strerror(ret));
goto fn_exit;
}
......@@ -250,8 +250,8 @@ static int handler_recv_dequeue_large(const ptl_event_t *e)
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlmdbind", "**ptlmdbind %s", MPID_nem_ptl_strerror(ret));
REQ_PTL(rreq)->event_handler = handler_recv_complete;
ret = PtlGet(REQ_PTL(rreq)->md, 0, rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptc,
NPTL_HEADER_GET_SEQNUM(e->hdr_data), 0, rreq);
ret = PtlGet(REQ_PTL(rreq)->md, 0, rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptg,
e->match_bits, 0, rreq);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlget", "**ptlget %s", MPID_nem_ptl_strerror(ret));
goto fn_exit;
}
......@@ -262,8 +262,7 @@ static int handler_recv_dequeue_large(const ptl_event_t *e)
REQ_PTL(rreq)->event_handler = handler_recv_unpack_complete;
ret = PtlGet(MPIDI_nem_ptl_global_md, (ptl_size_t)REQ_PTL(rreq)->chunk_buffer[0],
rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptc,
NPTL_HEADER_GET_SEQNUM(e->hdr_data), 0, rreq);
rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptg, e->match_bits, 0, rreq);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlget", "**ptlget %s", MPID_nem_ptl_strerror(ret));
fn_exit:
......@@ -323,8 +322,7 @@ static int handler_recv_dequeue_unpack_large(const ptl_event_t *e)
REQ_PTL(rreq)->event_handler = handler_recv_unpack_complete;
ret = PtlGet(MPIDI_nem_ptl_global_md, (ptl_size_t)REQ_PTL(rreq)->chunk_buffer[0],
rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptc,
NPTL_HEADER_GET_SEQNUM(e->hdr_data), 0, rreq);
rreq->dev.segment_size - rreq->dev.segment_first, vc_ptl->id, vc_ptl->ptg, e->match_bits, 0, rreq);
MPIU_ERR_CHKANDJUMP1(ret, mpi_errno, MPI_ERR_OTHER, "**ptlget", "**ptlget %s", MPID_nem_ptl_strerror(ret));
fn_exit:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment