pml/ob1: bug fixes and adjustments for changes in btl_sendi behavior
Этот коммит содержится в:
родитель
2a70238f4d
Коммит
271818f887
@ -642,7 +642,7 @@ int mca_pml_ob1_send_fin( ompi_proc_t* proc,
|
||||
opal_ptr_t hdr_frag,
|
||||
uint64_t rdma_size,
|
||||
uint8_t order,
|
||||
uint32_t status )
|
||||
int status )
|
||||
{
|
||||
mca_btl_base_descriptor_t* fin;
|
||||
mca_pml_ob1_fin_hdr_t* hdr;
|
||||
@ -665,9 +665,7 @@ int mca_pml_ob1_send_fin( ompi_proc_t* proc,
|
||||
ob1_hdr_hton(hdr, MCA_PML_OB1_HDR_TYPE_FIN, proc);
|
||||
|
||||
/* queue request */
|
||||
rc = mca_bml_base_send( bml_btl,
|
||||
fin,
|
||||
MCA_PML_OB1_HDR_TYPE_FIN );
|
||||
rc = mca_bml_base_send( bml_btl, fin, MCA_PML_OB1_HDR_TYPE_FIN );
|
||||
if( OPAL_LIKELY( rc >= 0 ) ) {
|
||||
if( OPAL_LIKELY( 1 == rc ) ) {
|
||||
MCA_PML_OB1_PROGRESS_PENDING(bml_btl);
|
||||
|
@ -254,7 +254,7 @@ do { \
|
||||
|
||||
|
||||
int mca_pml_ob1_send_fin(ompi_proc_t* proc, mca_bml_base_btl_t* bml_btl,
|
||||
opal_ptr_t hdr_frag, uint64_t size, uint8_t order, uint32_t status);
|
||||
opal_ptr_t hdr_frag, uint64_t size, uint8_t order, int status);
|
||||
|
||||
/* This function tries to resend FIN/ACK packets from pckt_pending queue.
|
||||
* Packets are added to the queue when sending of FIN or ACK is failed due to
|
||||
|
@ -66,7 +66,6 @@ static inline int mca_pml_ob1_send_inline (void *buf, size_t count,
|
||||
ompi_proc_t *dst_proc, mca_bml_base_endpoint_t* endpoint,
|
||||
ompi_communicator_t * comm)
|
||||
{
|
||||
mca_btl_base_descriptor_t *des = NULL;
|
||||
mca_pml_ob1_match_hdr_t match;
|
||||
mca_bml_base_btl_t *bml_btl;
|
||||
OPAL_PTRDIFF_TYPE lb, extent;
|
||||
@ -103,16 +102,12 @@ static inline int mca_pml_ob1_send_inline (void *buf, size_t count,
|
||||
/* try to send immediately */
|
||||
rc = mca_bml_base_sendi (bml_btl, &convertor, &match, OMPI_PML_OB1_MATCH_HDR_LEN,
|
||||
size, MCA_BTL_NO_ORDER, MCA_BTL_DES_FLAGS_PRIORITY | MCA_BTL_DES_FLAGS_BTL_OWNERSHIP,
|
||||
MCA_PML_OB1_HDR_TYPE_MATCH, &des);
|
||||
MCA_PML_OB1_HDR_TYPE_MATCH, NULL);
|
||||
if (count > 0) {
|
||||
opal_convertor_cleanup (&convertor);
|
||||
}
|
||||
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != rc)) {
|
||||
if (des) {
|
||||
mca_bml_base_free (bml_btl, des);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -193,13 +193,13 @@ static void mca_pml_ob1_put_completion (mca_pml_ob1_rdma_frag_t *frag, int64_t r
|
||||
mca_pml_ob1_recv_request_t* recvreq = (mca_pml_ob1_recv_request_t *) frag->rdma_req;
|
||||
mca_bml_base_btl_t *bml_btl = frag->rdma_bml;
|
||||
|
||||
assert (rdma_size == frag->rdma_length);
|
||||
|
||||
OPAL_THREAD_ADD_SIZE_T(&recvreq->req_pipeline_depth,-1);
|
||||
|
||||
MCA_PML_OB1_RDMA_FRAG_RETURN(frag);
|
||||
|
||||
if (OPAL_LIKELY(0 < rdma_size)) {
|
||||
assert (rdma_size == frag->rdma_length);
|
||||
|
||||
/* check completion status */
|
||||
OPAL_THREAD_ADD_SIZE_T(&recvreq->req_bytes_received, (size_t) rdma_size);
|
||||
if (recv_request_pml_complete_check(recvreq) == false &&
|
||||
|
@ -1081,9 +1081,9 @@ static void mca_pml_ob1_send_request_put_frag_failed (mca_pml_ob1_rdma_frag_t *f
|
||||
OPAL_THREAD_UNLOCK(&mca_pml_ob1.lock);
|
||||
} else {
|
||||
/* tell receiver to deregister memory */
|
||||
mca_pml_ob1_send_fin (sendreq->req_send.req_base.req_proc,
|
||||
bml_btl, frag->rdma_hdr.hdr_rdma.hdr_frag,
|
||||
0, MCA_BTL_NO_ORDER, 1);
|
||||
mca_pml_ob1_send_fin (sendreq->req_send.req_base.req_proc, bml_btl,
|
||||
frag->rdma_hdr.hdr_rdma.hdr_frag, 0, MCA_BTL_NO_ORDER,
|
||||
OPAL_ERR_TEMP_OUT_OF_RESOURCE);
|
||||
|
||||
/* send fragment by copy in/out */
|
||||
mca_pml_ob1_send_request_copy_in_out(sendreq, frag->rdma_hdr.hdr_rdma.hdr_rdma_offset,
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user