1
1
This commit was SVN r3384.
Этот коммит содержится в:
Tim Woodall 2004-10-28 16:29:14 +00:00
родитель 847c08fda5
Коммит 28f870e052
4 изменённых файлов: 89 добавлений и 87 удалений

Просмотреть файл

@ -293,7 +293,7 @@ int mca_ptl_mx_send_continue(
hdr->hdr_frag.hdr_frag_seq = 0;
hdr->hdr_frag.hdr_src_ptr.lval = 0; /* for VALGRIND/PURIFY - REPLACE WITH MACRO */
hdr->hdr_frag.hdr_src_ptr.pval = sendfrag;
hdr->hdr_frag.hdr_dst_ptr.lval = 0;
hdr->hdr_frag.hdr_dst_ptr = sendreq->req_peer_match;
/* initialize convertor */
sendfrag->frag_free = 0;
@ -421,7 +421,7 @@ void mca_ptl_mx_matched(
OMPI_THREAD_UNLOCK(&mca_ptl_mx_component.mx_lock);
} else {
mx_return_t mx_return;
mca_ptl_mx_send_frag_init_ack(ack, mx_ptl, mx_frag);
MCA_PTL_MX_SEND_FRAG_INIT_ACK(ack, ptl, mx_frag);
if(ack->frag_send.frag_base.frag_peer->peer_byte_swap) {
MCA_PTL_BASE_ACK_HDR_HTON(ack->frag_send.frag_base.frag_header.hdr_ack);
}

Просмотреть файл

@ -56,73 +56,72 @@ do {
* Routine to process complete request(s).
*/
static inline void MCA_PTL_MX_PROGRESS(mca_ptl_mx_module_t* ptl, mx_request_t mx_request)
{
mx_return_t mx_return;
mx_status_t mx_status;
uint32_t mx_result;
mca_ptl_base_frag_t* frag;
mx_return = mx_test(
ptl->mx_endpoint,
&mx_request,
&mx_status,
&mx_result);
if(mx_return != MX_SUCCESS) {
ompi_output(0, "mca_ptl_mx_progress: mx_test() failed with status=%dn",
mx_return);
return;
}
frag = (mca_ptl_base_frag_t*)mx_status.context;
switch(frag->frag_type) {
case MCA_PTL_FRAGMENT_SEND:
{
mca_ptl_mx_send_frag_t* sendfrag = (mca_ptl_mx_send_frag_t*)frag;
mca_pml_base_send_request_t* sendreq =
sendfrag->frag_send.frag_request;
bool req_cached = sendreq->req_cached;
ptl->super.ptl_send_progress(
&ptl->super,
sendreq,
sendfrag->frag_send.frag_base.frag_size);
if(req_cached == false)
MCA_PTL_MX_SEND_FRAG_RETURN(sendfrag);
break;
}
case MCA_PTL_FRAGMENT_RECV:
{
mca_ptl_mx_recv_frag_t* recvfrag = (mca_ptl_mx_recv_frag_t*)frag;
mca_ptl_base_header_t* hdr =
&recvfrag->frag_recv.frag_base.frag_header;
int rc;
switch(hdr->hdr_common.hdr_type) {
case MCA_PTL_HDR_TYPE_MATCH:
{
if(hdr->hdr_common.hdr_flags & MCA_PTL_FLAGS_NBO) {
MCA_PTL_BASE_MATCH_HDR_NTOH(hdr->hdr_match);
}
ptl->super.ptl_match(&ptl->super, &recvfrag->frag_recv,
&hdr->hdr_match);
break;
}
case MCA_PTL_HDR_TYPE_FRAG:
break;
case MCA_PTL_HDR_TYPE_ACK:
break;
}
MCA_PTL_MX_POST(ptl, rc);
break;
}
default:
{
ompi_output(0, "mca_ptl_mx_progress: invalid request type: %dn",
frag->frag_type);
break;
}
}
#define MCA_PTL_MX_PROGRESS(ptl, mx_request) \
{ \
mx_return_t mx_return; \
mx_status_t mx_status; \
uint32_t mx_result; \
mca_ptl_base_frag_t* frag; \
\
mx_return = mx_test( \
ptl->mx_endpoint, \
&mx_request, \
&mx_status, \
&mx_result); \
if(mx_return != MX_SUCCESS) { \
ompi_output(0, "mca_ptl_mx_progress: mx_test() failed with status=%dn", \
mx_return); \
break; \
} \
\
frag = (mca_ptl_base_frag_t*)mx_status.context; \
switch(frag->frag_type) { \
case MCA_PTL_FRAGMENT_SEND: \
{ \
mca_ptl_mx_send_frag_t* sendfrag = (mca_ptl_mx_send_frag_t*)frag; \
mca_pml_base_send_request_t* sendreq = \
sendfrag->frag_send.frag_request; \
bool req_cached = sendreq->req_cached; \
ptl->super.ptl_send_progress( \
&ptl->super, \
sendreq, \
sendfrag->frag_send.frag_base.frag_size); \
if(req_cached == false) \
MCA_PTL_MX_SEND_FRAG_RETURN(sendfrag); \
break; \
} \
case MCA_PTL_FRAGMENT_RECV: \
{ \
mca_ptl_mx_recv_frag_t* recvfrag = (mca_ptl_mx_recv_frag_t*)frag; \
mca_ptl_base_header_t* hdr = \
&recvfrag->frag_recv.frag_base.frag_header; \
int rc; \
switch(hdr->hdr_common.hdr_type) { \
case MCA_PTL_HDR_TYPE_MATCH: \
{ \
if(hdr->hdr_common.hdr_flags & MCA_PTL_FLAGS_NBO) { \
MCA_PTL_BASE_MATCH_HDR_NTOH(hdr->hdr_match); \
} \
ptl->super.ptl_match(&ptl->super, &recvfrag->frag_recv, \
&hdr->hdr_match); \
break; \
} \
case MCA_PTL_HDR_TYPE_FRAG: \
break; \
case MCA_PTL_HDR_TYPE_ACK: \
break; \
} \
MCA_PTL_MX_POST(ptl, rc); \
break; \
} \
default: \
{ \
ompi_output(0, "mca_ptl_mx_progress: invalid request type: %dn", \
frag->frag_type); \
break; \
} \
} \
}
#endif

Просмотреть файл

@ -34,18 +34,4 @@ static void mca_ptl_mx_send_frag_destruct(mca_ptl_mx_send_frag_t* frag)
}
static void *mca_ptl_mx_alloc(size_t *size)
{
return malloc(*size);
}
void mca_ptl_mx_send_frag_init_ack(
mca_ptl_mx_send_frag_t* ack,
mca_ptl_mx_module_t* ptl,
struct mca_ptl_mx_recv_frag_t* recv_frag)
{
}

Просмотреть файл

@ -51,11 +51,28 @@ typedef struct mca_ptl_mx_send_frag_t mca_ptl_mx_send_frag_t;
OBJ_CLASS_DECLARATION(mca_ptl_mx_send_frag_t);
void mca_ptl_mx_send_frag_init_ack(
mca_ptl_mx_send_frag_t* ack,
mca_ptl_mx_module_t* ptl,
struct mca_ptl_mx_recv_frag_t* recv_frag);
#define MCA_PTL_MX_SEND_FRAG_INIT_ACK(ack,ptl,frag) \
{ \
mca_ptl_base_header_t* hdr = &(ack)->frag_send.frag_base.frag_header; \
mca_pml_base_recv_request_t* request = frag->frag_recv.frag_request; \
hdr->hdr_common.hdr_type = MCA_PTL_HDR_TYPE_ACK; \
hdr->hdr_common.hdr_flags = 0; \
hdr->hdr_common.hdr_size = sizeof(mca_ptl_base_ack_header_t); \
hdr->hdr_ack.hdr_src_ptr = frag->frag_recv.frag_base.frag_header.hdr_frag.hdr_src_ptr; \
hdr->hdr_ack.hdr_dst_match.lval = 0; /* for VALGRIND/PURIFY - REPLACE WITH MACRO */ \
hdr->hdr_ack.hdr_dst_match.pval = request; \
hdr->hdr_ack.hdr_dst_addr.lval = 0; /* for VALGRIND/PURIFY - REPLACE WITH MACRO */ \
hdr->hdr_ack.hdr_dst_addr.pval = request->req_base.req_addr; \
hdr->hdr_ack.hdr_dst_size = request->req_bytes_packed; \
(ack)->frag_send.frag_request = NULL; \
(ack)->frag_send.frag_base.frag_peer = NULL; \
(ack)->frag_send.frag_base.frag_owner = ptl; \
(ack)->frag_send.frag_base.frag_addr = NULL; \
(ack)->frag_send.frag_base.frag_size = 0; \
(ack)->frag_segment_count = 1; \
(ack)->frag_free = 0; \
}
#endif