1
1
This commit was SVN r3381.
Этот коммит содержится в:
Tim Woodall 2004-10-28 14:39:39 +00:00
родитель 0e658eab97
Коммит 3a5cf46856
3 изменённых файлов: 44 добавлений и 43 удалений

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

@ -60,7 +60,8 @@ int mca_pml_teg_isend(void *buf,
datatype, datatype,
dst, tag, comm, sendmode, false); dst, tag, comm, sendmode, false);
if ((rc = mca_pml_teg_send_request_start(sendreq)) != OMPI_SUCCESS) MCA_PML_TEG_SEND_REQUEST_START(sendreq, rc);
if (rc != OMPI_SUCCESS)
return rc; return rc;
*request = (ompi_request_t *) sendreq; *request = (ompi_request_t *) sendreq;
return OMPI_SUCCESS; return OMPI_SUCCESS;
@ -90,7 +91,8 @@ int mca_pml_teg_send(void *buf,
datatype, datatype,
dst, tag, comm, sendmode, false); dst, tag, comm, sendmode, false);
if ((rc = mca_pml_teg_send_request_start(sendreq)) != OMPI_SUCCESS) { MCA_PML_TEG_SEND_REQUEST_START(sendreq, rc);
if (rc != OMPI_SUCCESS) {
MCA_PML_TEG_FREE((ompi_request_t **) & sendreq); MCA_PML_TEG_FREE((ompi_request_t **) & sendreq);
return rc; return rc;
} }

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

@ -110,46 +110,44 @@ OBJ_CLASS_DECLARATION(mca_pml_teg_send_request_t);
/** /**
* Start a send request. * Start a send request.
*/ */
static inline int mca_pml_teg_send_request_start( #define MCA_PML_TEG_SEND_REQUEST_START(req, rc) \
mca_pml_base_send_request_t* req) { \
{ mca_ptl_base_module_t* ptl = req->req_ptl; \
mca_ptl_base_module_t* ptl = req->req_ptl; size_t first_fragment_size = ptl->ptl_first_frag_size; \
size_t first_fragment_size = ptl->ptl_first_frag_size; int flags; \
int flags, rc; \
/* init/reinit request - do this here instead of init \
/* init/reinit request - do this here instead of init * as a persistent request may be reused, and there is \
* as a persistent request may be reused, and there is * no additional cost \
* no additional cost */ \
*/ req->req_offset = 0; \
req->req_offset = 0; req->req_bytes_sent = 0; \
req->req_bytes_sent = 0; req->req_peer_match.lval = 0; \
req->req_peer_match.lval = 0; req->req_peer_addr.lval = 0; \
req->req_peer_addr.lval = 0; req->req_peer_size = 0; \
req->req_peer_size = 0; req->req_base.req_pml_complete = false; \
req->req_base.req_pml_complete = false; req->req_base.req_ompi.req_complete = false; \
req->req_base.req_ompi.req_complete = false; req->req_base.req_ompi.req_state = OMPI_REQUEST_ACTIVE; \
req->req_base.req_ompi.req_state = OMPI_REQUEST_ACTIVE; req->req_base.req_sequence = mca_pml_ptl_comm_send_sequence( \
req->req_base.req_sequence = mca_pml_ptl_comm_send_sequence( req->req_base.req_comm->c_pml_comm, req->req_base.req_peer); \
req->req_base.req_comm->c_pml_comm, req->req_base.req_peer); \
/* handle buffered send */ \
/* handle buffered send */ if(req->req_send_mode == MCA_PML_BASE_SEND_BUFFERED) { \
if(req->req_send_mode == MCA_PML_BASE_SEND_BUFFERED) { mca_pml_base_bsend_request_start(&req->req_base.req_ompi); \
mca_pml_base_bsend_request_start(&req->req_base.req_ompi); } \
} \
/* start the first fragment */ \
/* start the first fragment */ if (first_fragment_size == 0 || \
if(first_fragment_size == 0 || req->req_bytes_packed <= first_fragment_size) { req->req_bytes_packed <= first_fragment_size) { \
first_fragment_size = req->req_bytes_packed; first_fragment_size = req->req_bytes_packed; \
flags = (req->req_send_mode == MCA_PML_BASE_SEND_SYNCHRONOUS) ? flags = (req->req_send_mode == MCA_PML_BASE_SEND_SYNCHRONOUS) ? \
MCA_PTL_FLAGS_ACK : 0; MCA_PTL_FLAGS_ACK : 0; \
} else { } else { \
/* require match for first fragment of a multi-fragment */ /* require match for first fragment of a multi-fragment */ \
flags = MCA_PTL_FLAGS_ACK; flags = MCA_PTL_FLAGS_ACK; \
} } \
rc = ptl->ptl_send(ptl, req->req_peer, req, 0, first_fragment_size, flags); rc = ptl->ptl_send(ptl, req->req_peer, req, 0, first_fragment_size, \
if(rc != OMPI_SUCCESS) flags); \
return rc;
return OMPI_SUCCESS;
} }

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

@ -90,7 +90,8 @@ int mca_pml_teg_start(size_t count, ompi_request_t** requests)
case MCA_PML_REQUEST_SEND: case MCA_PML_REQUEST_SEND:
{ {
mca_pml_base_send_request_t* sendreq = (mca_pml_base_send_request_t*)pml_request; mca_pml_base_send_request_t* sendreq = (mca_pml_base_send_request_t*)pml_request;
if((rc = mca_pml_teg_send_request_start(sendreq)) != OMPI_SUCCESS) MCA_PML_TEG_SEND_REQUEST_START(sendreq, rc);
if(rc != OMPI_SUCCESS)
return rc; return rc;
break; break;
} }