Use the new memchecker_call function for memory checking of non-blocking communication.
This commit was SVN r18399.
Этот коммит содержится в:
родитель
aed20e213b
Коммит
8393fb5d47
@ -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),
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) ) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user