in mca_mtl_mxm, don't allow negative tags for MPI_ANY_TAG
This commit was SVN r26128.
Этот коммит содержится в:
родитель
41870ce6ee
Коммит
bd7abd72a9
@ -20,11 +20,8 @@ int ompi_mtl_mxm_iprobe(struct mca_mtl_base_module_t* mtl,
|
|||||||
mxm_error_t err;
|
mxm_error_t err;
|
||||||
mxm_recv_req_t req;
|
mxm_recv_req_t req;
|
||||||
|
|
||||||
req.base.state = MXM_REQ_NEW;
|
req.base.state = MXM_REQ_NEW;
|
||||||
req.base.mq = (mxm_mq_h)comm->c_pml_comm;
|
ompi_mtl_mxm_set_recv_envelope(&req, comm, src, tag);
|
||||||
req.tag = tag;
|
|
||||||
req.tag_mask = (tag == MPI_ANY_TAG) ? 0 : 0xffffffffU;
|
|
||||||
req.base.conn = (src == MPI_ANY_SOURCE) ? NULL : ompi_mtl_mxm_conn_lookup(comm, src);
|
|
||||||
|
|
||||||
err = mxm_req_probe(&req);
|
err = mxm_req_probe(&req);
|
||||||
if (MXM_OK == err) {
|
if (MXM_OK == err) {
|
||||||
|
@ -63,9 +63,8 @@ int ompi_mtl_mxm_irecv(struct mca_mtl_base_module_t* mtl,
|
|||||||
mxm_recv_req = &mtl_mxm_request->mxm.recv;
|
mxm_recv_req = &mtl_mxm_request->mxm.recv;
|
||||||
|
|
||||||
mxm_recv_req->base.state = MXM_REQ_NEW;
|
mxm_recv_req->base.state = MXM_REQ_NEW;
|
||||||
mxm_recv_req->base.mq = ompi_mtl_mxm_mq_lookup(comm);
|
ompi_mtl_mxm_set_recv_envelope(mxm_recv_req, comm, src, tag);
|
||||||
mxm_recv_req->base.conn = (src == MPI_ANY_SOURCE) ? NULL :
|
|
||||||
ompi_mtl_mxm_conn_lookup(comm, src);
|
|
||||||
mxm_recv_req->base.flags = 0;
|
mxm_recv_req->base.flags = 0;
|
||||||
mxm_recv_req->base.data_type = MXM_REQ_DATA_BUFFER;
|
mxm_recv_req->base.data_type = MXM_REQ_DATA_BUFFER;
|
||||||
mxm_recv_req->base.data.buffer.ptr = mtl_mxm_request->buf;
|
mxm_recv_req->base.data.buffer.ptr = mtl_mxm_request->buf;
|
||||||
@ -73,8 +72,6 @@ int ompi_mtl_mxm_irecv(struct mca_mtl_base_module_t* mtl,
|
|||||||
mxm_recv_req->base.data.buffer.mkey = MXM_MKEY_NONE;
|
mxm_recv_req->base.data.buffer.mkey = MXM_MKEY_NONE;
|
||||||
mxm_recv_req->base.context = mtl_mxm_request;
|
mxm_recv_req->base.context = mtl_mxm_request;
|
||||||
mxm_recv_req->base.completed_cb = ompi_mtl_mxm_recv_completion_cb;
|
mxm_recv_req->base.completed_cb = ompi_mtl_mxm_recv_completion_cb;
|
||||||
mxm_recv_req->tag = tag;
|
|
||||||
mxm_recv_req->tag_mask = (tag == MPI_ANY_TAG) ? 0 : 0xffffffffU;
|
|
||||||
|
|
||||||
/* post-recv */
|
/* post-recv */
|
||||||
err = mxm_req_recv(mxm_recv_req);
|
err = mxm_req_recv(mxm_recv_req);
|
||||||
|
@ -68,6 +68,22 @@ static inline int ompi_mtl_mxm_to_mpi_status(mxm_error_t status) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void ompi_mtl_mxm_set_recv_envelope(mxm_recv_req_t *req,
|
||||||
|
struct ompi_communicator_t *comm,
|
||||||
|
int src, int tag) {
|
||||||
|
req->base.mq = (mxm_mq_h)comm->c_pml_comm;
|
||||||
|
req->base.conn = (src == MPI_ANY_SOURCE)
|
||||||
|
? NULL
|
||||||
|
: ompi_mtl_mxm_conn_lookup(comm, src);
|
||||||
|
if (tag == MPI_ANY_TAG) {
|
||||||
|
req->tag = 0;
|
||||||
|
req->tag_mask = 0x80000000U; /* MPI_ANY_TAG should not match against negative tags */
|
||||||
|
} else {
|
||||||
|
req->tag = tag;
|
||||||
|
req->tag_mask = 0xffffffffU;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
END_C_DECLS
|
END_C_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user