diff --git a/ompi/mca/pml/ob1/pml_ob1_irecv.c b/ompi/mca/pml/ob1/pml_ob1_irecv.c index 3010729fc0..4dc164b875 100644 --- a/ompi/mca/pml/ob1/pml_ob1_irecv.c +++ b/ompi/mca/pml/ob1/pml_ob1_irecv.c @@ -22,7 +22,6 @@ #include "ompi/request/request.h" #include "pml_ob1_recvreq.h" #include "ompi/peruse/peruse-internal.h" -#include "ompi/memchecker.h" int mca_pml_ob1_irecv_init(void *addr, size_t count, @@ -41,13 +40,6 @@ int mca_pml_ob1_irecv_init(void *addr, MCA_PML_OB1_RECV_REQUEST_INIT(recvreq, addr, count, datatype, src, tag, comm, true); - /* - * Receive request is initialized, let's start memory checking. - */ - MEMCHECKER ( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &recvreq->req_recv.req_base.req_convertor); - ); PERUSE_TRACE_COMM_EVENT (PERUSE_COMM_REQ_ACTIVATE, &((recvreq)->req_recv.req_base), diff --git a/ompi/mca/pml/ob1/pml_ob1_isend.c b/ompi/mca/pml/ob1/pml_ob1_isend.c index 93b5384585..48f63dd1c0 100644 --- a/ompi/mca/pml/ob1/pml_ob1_isend.c +++ b/ompi/mca/pml/ob1/pml_ob1_isend.c @@ -24,7 +24,6 @@ #include "pml_ob1_sendreq.h" #include "pml_ob1_recvreq.h" #include "ompi/peruse/peruse-internal.h" -#include "ompi/memchecker.h" int mca_pml_ob1_isend_init(void *buf, size_t count, @@ -48,14 +47,6 @@ int mca_pml_ob1_isend_init(void *buf, datatype, dst, tag, comm, sendmode, true); - - /* - * Send request is initialized, let's start memory checking. - */ - MEMCHECKER ( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &sendreq->req_send.req_base.req_convertor); - ); PERUSE_TRACE_COMM_EVENT (PERUSE_COMM_REQ_ACTIVATE, &(sendreq)->req_send.req_base, diff --git a/ompi/mca/pml/ob1/pml_ob1_recvreq.c b/ompi/mca/pml/ob1/pml_ob1_recvreq.c index c81f85fa14..51a5506393 100644 --- a/ompi/mca/pml/ob1/pml_ob1_recvreq.c +++ b/ompi/mca/pml/ob1/pml_ob1_recvreq.c @@ -72,8 +72,10 @@ static int mca_pml_ob1_recv_request_free(struct ompi_request_t** request) * Package successfully received, make user buffer accessable. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); *request = MPI_REQUEST_NULL; return OMPI_SUCCESS; @@ -89,8 +91,10 @@ static int mca_pml_ob1_recv_request_cancel(struct ompi_request_t* ompi_request, * Receive request completed, make user buffer accessable. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &request->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + request->req_recv.req_base.req_addr, + request->req_recv.req_base.req_count, + request->req_recv.req_base.req_datatype); ); return OMPI_SUCCESS; } @@ -126,8 +130,10 @@ static int mca_pml_ob1_recv_request_cancel(struct ompi_request_t* ompi_request, * Receive request cancelled, make user buffer accessable. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &request->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + request->req_recv.req_base.req_addr, + request->req_recv.req_base.req_count, + request->req_recv.req_base.req_datatype); ); return OMPI_SUCCESS; } @@ -478,8 +484,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, * Make user buffer accessible (defined) before unpacking. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); MCA_PML_OB1_RECV_REQUEST_UNPACK( recvreq, segments, @@ -492,8 +500,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, * Unpacking finished, make the user buffer unaccessable again. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); break; @@ -512,8 +522,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, */ if( 0 < bytes_received ) { MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); MCA_PML_OB1_RECV_REQUEST_UNPACK( recvreq, segments, @@ -523,8 +535,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, bytes_received, bytes_delivered ); MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); } break; @@ -543,8 +557,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, * Make user buffer accessable(defined) before unpacking. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); MCA_PML_OB1_RECV_REQUEST_UNPACK( recvreq, segments, @@ -557,8 +573,10 @@ void mca_pml_ob1_recv_request_progress( mca_pml_ob1_recv_request_t* recvreq, * Unpacking finished, make the user buffer unaccessable again. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &recvreq->req_recv.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + recvreq->req_recv.req_base.req_addr, + recvreq->req_recv.req_base.req_count, + recvreq->req_recv.req_base.req_datatype); ); break; diff --git a/ompi/mca/pml/ob1/pml_ob1_sendreq.c b/ompi/mca/pml/ob1/pml_ob1_sendreq.c index 6d679df325..9573e4653c 100644 --- a/ompi/mca/pml/ob1/pml_ob1_sendreq.c +++ b/ompi/mca/pml/ob1/pml_ob1_sendreq.c @@ -104,8 +104,10 @@ static int mca_pml_ob1_send_request_free(struct ompi_request_t** request) OPAL_THREAD_UNLOCK(&ompi_request_lock); MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); *request = MPI_REQUEST_NULL; return OMPI_SUCCESS; @@ -439,8 +441,10 @@ int mca_pml_ob1_send_request_start_copy( mca_pml_ob1_send_request_t* sendreq, * accessable. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); (void)ompi_convertor_pack( &sendreq->req_send.req_base.req_convertor, &iov, &iov_count, &max_data ); @@ -448,8 +452,10 @@ int mca_pml_ob1_send_request_start_copy( mca_pml_ob1_send_request_t* sendreq, * Packing finished, make the user buffer unaccessable. */ MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); } @@ -580,8 +586,10 @@ int mca_pml_ob1_send_request_start_rdma( size_t old_position = sendreq->req_send.req_base.req_convertor.bConverted; MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); /* prepare source descriptor/segment(s) */ /* PML owns this descriptor and will free it in */ @@ -595,8 +603,10 @@ int mca_pml_ob1_send_request_start_rdma( 0, &src ); MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); if( OPAL_UNLIKELY(NULL == src) ) { ompi_convertor_set_position(&sendreq->req_send.req_base.req_convertor, @@ -727,8 +737,10 @@ int mca_pml_ob1_send_request_start_rndv( mca_pml_ob1_send_request_t* sendreq, MCA_BTL_DES_FLAGS_PRIORITY | MCA_BTL_DES_FLAGS_BTL_OWNERSHIP ); } else { MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); mca_bml_base_prepare_src( bml_btl, NULL, @@ -739,8 +751,10 @@ int mca_pml_ob1_send_request_start_rndv( mca_pml_ob1_send_request_t* sendreq, MCA_BTL_DES_FLAGS_PRIORITY | MCA_BTL_DES_FLAGS_BTL_OWNERSHIP, &des ); MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); } @@ -934,8 +948,10 @@ cannot_pack: data_remaining = size; MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_defined, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_defined, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); mca_bml_base_prepare_src(bml_btl, NULL, &sendreq->req_send.req_base.req_convertor, @@ -943,8 +959,10 @@ cannot_pack: sizeof(mca_pml_ob1_frag_hdr_t), &size, MCA_BTL_DES_FLAGS_BTL_OWNERSHIP, &des); MEMCHECKER( - memchecker_convertor_call(&opal_memchecker_base_mem_noaccess, - &sendreq->req_send.req_base.req_convertor); + memchecker_call(&opal_memchecker_base_mem_noaccess, + sendreq->req_send.req_base.req_addr, + sendreq->req_send.req_base.req_count, + sendreq->req_send.req_base.req_datatype); ); if( OPAL_UNLIKELY(des == NULL || size == 0) ) { diff --git a/ompi/mpi/c/irecv.c b/ompi/mpi/c/irecv.c index fecbe0081c..9e1afd9bb5 100644 --- a/ompi/mpi/c/irecv.c +++ b/ompi/mpi/c/irecv.c @@ -70,6 +70,9 @@ int MPI_Irecv(void *buf, int count, MPI_Datatype type, int source, OPAL_CR_ENTER_LIBRARY(); + MEMCHECKER ( + memchecker_call(&opal_memchecker_base_mem_noaccess, buf, count, type); + ); rc = MCA_PML_CALL(irecv(buf,count,type,source,tag,comm,request)); OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME); } diff --git a/ompi/mpi/c/isend.c b/ompi/mpi/c/isend.c index 6fce52ee14..44d0687986 100644 --- a/ompi/mpi/c/isend.c +++ b/ompi/mpi/c/isend.c @@ -75,6 +75,9 @@ int MPI_Isend(void *buf, int count, MPI_Datatype type, int dest, OPAL_CR_ENTER_LIBRARY(); + MEMCHECKER ( + memchecker_call(&opal_memchecker_base_mem_noaccess, buf, count, type); + ); rc = MCA_PML_CALL(isend(buf,count,type,dest,tag,MCA_PML_BASE_SEND_STANDARD,comm,request)); OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME); }