Beispiel #1
0
static void ompi_mtl_mxm_send_completion_cb(void *context)
{
    mca_mtl_mxm_request_t *mtl_mxm_request = context;

    if (mtl_mxm_request->free_after) {
        free(mtl_mxm_request->buf);
    }

    ompi_mtl_mxm_to_mpi_status(mtl_mxm_request->mxm.base.error,
                               &mtl_mxm_request->super.ompi_req->req_status);
    mtl_mxm_request->super.completion_callback(&mtl_mxm_request->super);
}
static void ompi_mtl_mxm_recv_completion_cb(void *context)
{
	mca_mtl_mxm_request_t *req = (mca_mtl_mxm_request_t *) context;
    struct ompi_request_t *ompi_req = req->super.ompi_req;
    mxm_recv_req_t *mxm_recv_req = &req->mxm.recv;

    /* Set completion status and envelope */
    ompi_mtl_mxm_to_mpi_status(mxm_recv_req->base.error, &ompi_req->req_status);
    ompi_req->req_status.MPI_TAG    = mxm_recv_req->completion.sender_tag;
    ompi_req->req_status.MPI_SOURCE = mxm_recv_req->completion.sender_imm;
    ompi_req->req_status._ucount    = mxm_recv_req->completion.actual_len;

    req->super.completion_callback(&req->super);
}
Beispiel #3
0
static void ompi_mtl_mxm_recv_completion_cb(void *context)
{
	mca_mtl_mxm_request_t *req = (mca_mtl_mxm_request_t *) context;
    struct ompi_request_t *ompi_req = req->super.ompi_req;
    mxm_recv_req_t *mxm_recv_req = &req->mxm.recv;

    /* Set completion status and envelope */
    ompi_req->req_status.MPI_TAG    = mxm_recv_req->completion.sender_tag;
    ompi_req->req_status.MPI_SOURCE = mxm_recv_req->completion.sender_imm;
    ompi_req->req_status.MPI_ERROR  = ompi_mtl_mxm_to_mpi_status(mxm_recv_req->base.error);
    ompi_req->req_status._ucount    = mxm_recv_req->completion.actual_len;

    /* Copy data */
    ompi_mtl_datatype_unpack(req->convertor, req->buf,
                             mxm_recv_req->completion.actual_len);

    if (req->free_after) {
        free(req->buf);
    }

    req->super.completion_callback(&req->super);
}