diff --git a/ompi/mca/pml/csum/pml_csum_recvreq.h b/ompi/mca/pml/csum/pml_csum_recvreq.h index 85f91d78a8..94c8a3599a 100644 --- a/ompi/mca/pml/csum/pml_csum_recvreq.h +++ b/ompi/mca/pml/csum/pml_csum_recvreq.h @@ -195,15 +195,29 @@ recv_request_pml_complete_check(mca_pml_csum_recv_request_t *recvreq) extern void mca_pml_csum_recv_req_start(mca_pml_csum_recv_request_t *req); #define MCA_PML_CSUM_RECV_REQUEST_START(r) mca_pml_csum_recv_req_start(r) + +#define MCA_PML_CSUM_CHECK_LOCAL_RECV(req) \ + if(OPAL_PROC_ON_LOCAL_NODE( \ + (req)->req_recv.req_base.req_proc->proc_flags)) { \ + (req)->req_recv.req_base.req_proc->proc_convertor->flags = \ + (req)->req_recv.req_base.req_proc->proc_convertor->flags & \ + ~CONVERTOR_WITH_CHECKSUM; \ + } else { \ + (req)->req_recv.req_base.req_proc->proc_convertor->flags = \ + (req)->req_recv.req_base.req_proc->proc_convertor->flags | \ + CONVERTOR_WITH_CHECKSUM; \ + } + static inline void prepare_recv_req_converter(mca_pml_csum_recv_request_t *req) { if( req->req_recv.req_base.req_datatype->super.size | req->req_recv.req_base.req_count ) { + MCA_PML_CSUM_CHECK_LOCAL_RECV(req); opal_convertor_copy_and_prepare_for_recv( req->req_recv.req_base.req_proc->proc_convertor, &(req->req_recv.req_base.req_datatype->super), req->req_recv.req_base.req_count, req->req_recv.req_base.req_addr, - CONVERTOR_WITH_CHECKSUM, + 0, &req->req_recv.req_base.req_convertor); opal_convertor_get_unpacked_size(&req->req_recv.req_base.req_convertor, &req->req_bytes_delivered); diff --git a/ompi/mca/pml/csum/pml_csum_sendreq.h b/ompi/mca/pml/csum/pml_csum_sendreq.h index c37686f7a4..461b1fd383 100644 --- a/ompi/mca/pml/csum/pml_csum_sendreq.h +++ b/ompi/mca/pml/csum/pml_csum_sendreq.h @@ -132,6 +132,17 @@ get_request_from_send_pending(mca_pml_csum_send_pending_t *type) } \ } +#define MCA_PML_CSUM_CHECK_LOCAL_SEND(sendreq) \ + if(OPAL_PROC_ON_LOCAL_NODE( \ + (sendreq)->req_send.req_base.req_proc->proc_flags)) { \ + (sendreq)->req_send.req_base.req_proc->proc_convertor->flags = \ + (sendreq)->req_send.req_base.req_proc->proc_convertor->flags & \ + ~CONVERTOR_WITH_CHECKSUM; \ + } else { \ + (sendreq)->req_send.req_base.req_proc->proc_convertor->flags = \ + (sendreq)->req_send.req_base.req_proc->proc_convertor->flags | \ + CONVERTOR_WITH_CHECKSUM; \ + } #define MCA_PML_CSUM_SEND_REQUEST_INIT(sendreq, \ buf, \ @@ -143,6 +154,7 @@ get_request_from_send_pending(mca_pml_csum_send_pending_t *type) sendmode, \ persistent) \ { \ + MCA_PML_CSUM_CHECK_LOCAL_SEND(sendreq); \ MCA_PML_BASE_SEND_REQUEST_INIT(&sendreq->req_send, \ buf, \ count, \ @@ -152,7 +164,7 @@ get_request_from_send_pending(mca_pml_csum_send_pending_t *type) comm, \ sendmode, \ persistent, \ - CONVERTOR_WITH_CHECKSUM); \ + 0); \ (sendreq)->req_recv.pval = NULL; \ }