Ejemplo n.º 1
0
static ucs_status_t ucp_tag_eager_sync_generic_multi(uct_pending_req_t *self)
{
    ucs_status_t status = ucp_do_am_bcopy_multi(self,
                                                UCP_AM_ID_EAGER_SYNC_FIRST,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                UCP_AM_ID_EAGER_LAST,
                                                sizeof(ucp_eager_sync_first_hdr_t),
                                                sizeof(ucp_eager_hdr_t),
                                                ucp_tag_pack_eager_sync_first_generic,
                                                ucp_tag_pack_eager_middle_generic,
                                                ucp_tag_pack_eager_last_generic);
    if (status == UCS_OK) {
        ucp_tag_eager_sync_generic_complete(self);
    }
    return status;
}
Ejemplo n.º 2
0
static ucs_status_t ucp_tag_eager_sync_contig_bcopy_multi(uct_pending_req_t *self)
{
    ucs_status_t status = ucp_do_am_bcopy_multi(self,
                                                UCP_AM_ID_EAGER_SYNC_FIRST,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                UCP_AM_ID_EAGER_LAST,
                                                sizeof(ucp_eager_sync_first_hdr_t),
                                                sizeof(ucp_eager_hdr_t),
                                                ucp_tag_pack_eager_sync_first_contig,
                                                ucp_tag_pack_eager_middle_contig,
                                                ucp_tag_pack_eager_last_contig);
    if (status == UCS_OK) {
        ucp_request_t *req = ucs_container_of(self, ucp_request_t, send.uct);
        ucp_tag_eager_sync_completion(req, UCP_REQUEST_FLAG_LOCAL_COMPLETED);
    }
    return status;
}
Ejemplo n.º 3
0
static ucs_status_t ucp_tag_eager_contig_bcopy_multi(uct_pending_req_t *self)
{
    ucs_status_t status = ucp_do_am_bcopy_multi(self,
                                                UCP_AM_ID_EAGER_FIRST,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                UCP_AM_ID_EAGER_LAST,
                                                sizeof(ucp_eager_first_hdr_t),
                                                sizeof(ucp_eager_hdr_t),
                                                ucp_tag_pack_eager_first_contig,
                                                ucp_tag_pack_eager_middle_contig,
                                                ucp_tag_pack_eager_last_contig);
    if (status == UCS_OK) {
        ucp_request_t *req = ucs_container_of(self, ucp_request_t, send.uct);
        ucp_request_complete(req, req->cb.send, UCS_OK);
    }
    return status;
}
Ejemplo n.º 4
0
static ucs_status_t ucp_tag_eager_bcopy_multi(uct_pending_req_t *self)
{
    ucs_status_t status = ucp_do_am_bcopy_multi(self,
                                                UCP_AM_ID_EAGER_FIRST,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                UCP_AM_ID_EAGER_LAST,
                                                sizeof(ucp_eager_hdr_t),
                                                ucp_tag_pack_eager_first_dt,
                                                ucp_tag_pack_eager_middle_dt,
                                                ucp_tag_pack_eager_last_dt);
    if (status == UCS_OK) {
        ucp_request_t *req = ucs_container_of(self, ucp_request_t, send.uct);
        ucp_request_send_generic_dt_finish(req);
        ucp_request_complete_send(req, UCS_OK);
    }
    return status;
}
Ejemplo n.º 5
0
static ucs_status_t ucp_tag_eager_sync_bcopy_multi(uct_pending_req_t *self)
{
    ucs_status_t status = ucp_do_am_bcopy_multi(self,
                                                UCP_AM_ID_EAGER_SYNC_FIRST,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                UCP_AM_ID_EAGER_MIDDLE,
                                                sizeof(ucp_eager_middle_hdr_t),
                                                ucp_tag_pack_eager_sync_first_dt,
                                                ucp_tag_pack_eager_middle_dt,
                                                ucp_tag_pack_eager_last_dt, 1);
    if (status == UCS_OK) {
        ucp_request_t *req = ucs_container_of(self, ucp_request_t, send.uct);
        ucp_request_send_generic_dt_finish(req);
        ucp_tag_eager_sync_completion(req, UCP_REQUEST_FLAG_LOCAL_COMPLETED,
                                      UCS_OK);
    } else if (status == UCP_STATUS_PENDING_SWITCH) {
        status = UCS_OK;
    }
    return status;
}