diff --git a/ompi/mpi/c/alltoall.c b/ompi/mpi/c/alltoall.c index 7426c01f46..be39433ba1 100644 --- a/ompi/mpi/c/alltoall.c +++ b/ompi/mpi/c/alltoall.c @@ -51,11 +51,13 @@ int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int err; MEMCHECKER( - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype); - memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + memchecker_call(&opal_memchecker_base_isdefined, (void *)sendbuf, sendcount, sendtype); + } + memchecker_datatype(recvtype); + memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); ); if (MPI_PARAM_CHECK) { diff --git a/ompi/mpi/c/alltoallv.c b/ompi/mpi/c/alltoallv.c index 03cea136cf..00b09f5d49 100644 --- a/ompi/mpi/c/alltoallv.c +++ b/ompi/mpi/c/alltoallv.c @@ -56,20 +56,23 @@ int MPI_Alltoallv(const void *sendbuf, const int sendcounts[], ptrdiff_t recv_ext; ptrdiff_t send_ext; - memchecker_datatype(sendtype); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + ompi_datatype_type_extent(sendtype, &send_ext); + } memchecker_datatype(recvtype); - ompi_datatype_type_extent(recvtype, &recv_ext); - ompi_datatype_type_extent(sendtype, &send_ext); memchecker_comm(comm); size = OMPI_COMM_IS_INTER(comm)?ompi_comm_remote_size(comm):ompi_comm_size(comm); for ( i = 0; i < size; i++ ) { - /* check if send chunks are defined. */ - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtype); + if (MPI_IN_PLACE != sendbuf) { + /* check if send chunks are defined. */ + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtype); + } /* check if receive chunks are addressable. */ memchecker_call(&opal_memchecker_base_isaddressable, (char *)(recvbuf)+rdispls[i]*recv_ext, diff --git a/ompi/mpi/c/alltoallw.c b/ompi/mpi/c/alltoallw.c index 802e9df55c..01d8edcf0a 100644 --- a/ompi/mpi/c/alltoallw.c +++ b/ompi/mpi/c/alltoallw.c @@ -60,17 +60,17 @@ int MPI_Alltoallw(const void *sendbuf, const int sendcounts[], size = OMPI_COMM_IS_INTER(comm)?ompi_comm_remote_size(comm):ompi_comm_size(comm); for ( i = 0; i < size; i++ ) { - memchecker_datatype(sendtypes[i]); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtypes[i]); + ompi_datatype_type_extent(sendtypes[i], &send_ext); + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtypes[i]); + } memchecker_datatype(recvtypes[i]); - - ompi_datatype_type_extent(sendtypes[i], &send_ext); ompi_datatype_type_extent(recvtypes[i], &recv_ext); - - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtypes[i]); memchecker_call(&opal_memchecker_base_isaddressable, - (char *)(recvbuf)+sdispls[i]*recv_ext, + (char *)(recvbuf)+rdispls[i]*recv_ext, recvcounts[i], recvtypes[i]); } ); diff --git a/ompi/mpi/c/ialltoall.c b/ompi/mpi/c/ialltoall.c index 41ea7491fe..9fe00f97be 100644 --- a/ompi/mpi/c/ialltoall.c +++ b/ompi/mpi/c/ialltoall.c @@ -52,11 +52,13 @@ int MPI_Ialltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int err; MEMCHECKER( - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype); - memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + memchecker_call(&opal_memchecker_base_isdefined, (void *)sendbuf, sendcount, sendtype); + } + memchecker_datatype(recvtype); + memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); ); if (MPI_PARAM_CHECK) { diff --git a/ompi/mpi/c/ialltoallv.c b/ompi/mpi/c/ialltoallv.c index 579722567a..19cb022c1d 100644 --- a/ompi/mpi/c/ialltoallv.c +++ b/ompi/mpi/c/ialltoallv.c @@ -55,20 +55,24 @@ int MPI_Ialltoallv(const void *sendbuf, const int sendcounts[], const int sdispl ptrdiff_t recv_ext; ptrdiff_t send_ext; - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - - ompi_datatype_type_extent(recvtype, &recv_ext); - ompi_datatype_type_extent(sendtype, &send_ext); - memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + ompi_datatype_type_extent(sendtype, &send_ext); + } + + memchecker_datatype(recvtype); + ompi_datatype_type_extent(recvtype, &recv_ext); + size = OMPI_COMM_IS_INTER(comm)?ompi_comm_remote_size(comm):ompi_comm_size(comm); for ( i = 0; i < size; i++ ) { - /* check if send chunks are defined. */ - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtype); + if (MPI_IN_PLACE != sendbuf) { + /* check if send chunks are defined. */ + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtype); + } /* check if receive chunks are addressable. */ memchecker_call(&opal_memchecker_base_isaddressable, (char *)(recvbuf)+rdispls[i]*recv_ext, diff --git a/ompi/mpi/c/ialltoallw.c b/ompi/mpi/c/ialltoallw.c index 980ee980e8..ececf1271f 100644 --- a/ompi/mpi/c/ialltoallw.c +++ b/ompi/mpi/c/ialltoallw.c @@ -60,15 +60,16 @@ int MPI_Ialltoallw(const void *sendbuf, const int sendcounts[], const int sdispl size = OMPI_COMM_IS_INTER(comm)?ompi_comm_remote_size(comm):ompi_comm_size(comm); for ( i = 0; i < size; i++ ) { - memchecker_datatype(sendtypes[i]); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtypes[i]); + ompi_datatype_type_extent(sendtypes[i], &send_ext); + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtypes[i]); + } + memchecker_datatype(recvtypes[i]); - - ompi_datatype_type_extent(sendtypes[i], &send_ext); ompi_datatype_type_extent(recvtypes[i], &recv_ext); - - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtypes[i]); memchecker_call(&opal_memchecker_base_isaddressable, (char *)(recvbuf)+sdispls[i]*recv_ext, recvcounts[i], recvtypes[i]); diff --git a/ompi/mpi/c/ineighbor_alltoall.c b/ompi/mpi/c/ineighbor_alltoall.c index 746697ebf7..285965f8a5 100644 --- a/ompi/mpi/c/ineighbor_alltoall.c +++ b/ompi/mpi/c/ineighbor_alltoall.c @@ -52,11 +52,13 @@ int MPI_Ineighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype send int err; MEMCHECKER( - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype); - memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + memchecker_call(&opal_memchecker_base_isdefined, (void *)sendbuf, sendcount, sendtype); + } + memchecker_datatype(recvtype); + memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); ); if (MPI_PARAM_CHECK) { diff --git a/ompi/mpi/c/ineighbor_alltoallv.c b/ompi/mpi/c/ineighbor_alltoallv.c index e43c7bd244..f2d3a6d1ee 100644 --- a/ompi/mpi/c/ineighbor_alltoallv.c +++ b/ompi/mpi/c/ineighbor_alltoallv.c @@ -56,21 +56,25 @@ int MPI_Ineighbor_alltoallv(const void *sendbuf, const int sendcounts[], const i ptrdiff_t recv_ext; ptrdiff_t send_ext; - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - - ompi_datatype_type_extent(recvtype, &recv_ext); - ompi_datatype_type_extent(sendtype, &send_ext); - memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + ompi_datatype_type_extent(recvtype, &recv_ext); + } + + memchecker_datatype(recvtype); + ompi_datatype_type_extent(sendtype, &send_ext); + err = ompi_comm_neighbors_count(comm, &indegree, &outdegree, &weighted); if (MPI_SUCCESS == err) { - for ( i = 0; i < outdegree; i++ ) { - /* check if send chunks are defined. */ - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtype); + if (MPI_IN_PLACE != sendbuf) { + for ( i = 0; i < outdegree; i++ ) { + /* check if send chunks are defined. */ + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtype); + } } for ( i = 0; i < indegree; i++ ) { /* check if receive chunks are addressable. */ diff --git a/ompi/mpi/c/ineighbor_alltoallw.c b/ompi/mpi/c/ineighbor_alltoallw.c index 3cf7436387..8f82131151 100644 --- a/ompi/mpi/c/ineighbor_alltoallw.c +++ b/ompi/mpi/c/ineighbor_alltoallw.c @@ -60,14 +60,16 @@ int MPI_Ineighbor_alltoallw(const void *sendbuf, const int sendcounts[], const M err = ompi_comm_neighbors_count(comm, &indegree, &outdegree, &weighted); if (MPI_SUCCESS == err) { - for ( i = 0; i < outdegree; i++ ) { - memchecker_datatype(sendtypes[i]); + if (MPI_IN_PLACE != sendbuf) { + for ( i = 0; i < outdegree; i++ ) { + memchecker_datatype(sendtypes[i]); - ompi_datatype_type_extent(sendtypes[i], &send_ext); + ompi_datatype_type_extent(sendtypes[i], &send_ext); - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtypes[i]); + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtypes[i]); + } } for ( i = 0; i < indegree; i++ ) { memchecker_datatype(recvtypes[i]); diff --git a/ompi/mpi/c/neighbor_alltoall.c b/ompi/mpi/c/neighbor_alltoall.c index 6c23fd96a0..be1c913be8 100644 --- a/ompi/mpi/c/neighbor_alltoall.c +++ b/ompi/mpi/c/neighbor_alltoall.c @@ -51,11 +51,13 @@ int MPI_Neighbor_alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendt int err; MEMCHECKER( - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype); - memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + memchecker_call(&opal_memchecker_base_isdefined, (void *)sendbuf, sendcount, sendtype); + } + memchecker_datatype(recvtype); + memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype); ); if (MPI_PARAM_CHECK) { diff --git a/ompi/mpi/c/neighbor_alltoallv.c b/ompi/mpi/c/neighbor_alltoallv.c index c29c51a5d2..deac2c32b9 100644 --- a/ompi/mpi/c/neighbor_alltoallv.c +++ b/ompi/mpi/c/neighbor_alltoallv.c @@ -58,21 +58,25 @@ int MPI_Neighbor_alltoallv(const void *sendbuf, const int sendcounts[], const in ptrdiff_t recv_ext; ptrdiff_t send_ext; - memchecker_datatype(sendtype); - memchecker_datatype(recvtype); - - ompi_datatype_type_extent(recvtype, &recv_ext); - ompi_datatype_type_extent(sendtype, &send_ext); - memchecker_comm(comm); + if (MPI_IN_PLACE != sendbuf) { + memchecker_datatype(sendtype); + ompi_datatype_type_extent(recvtype, &recv_ext); + } + + memchecker_datatype(recvtype); + ompi_datatype_type_extent(sendtype, &send_ext); + err = ompi_comm_neighbors_count(comm, &indegree, &outdegree, &weighted); if (MPI_SUCCESS == err) { - for ( i = 0; i < outdegree; i++ ) { - /* check if send chunks are defined. */ - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtype); + if (MPI_IN_PLACE != sendbuf) { + for ( i = 0; i < outdegree; i++ ) { + /* check if send chunks are defined. */ + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtype); + } } for ( i = 0; i < indegree; i++ ) { /* check if receive chunks are addressable. */ diff --git a/ompi/mpi/c/neighbor_alltoallw.c b/ompi/mpi/c/neighbor_alltoallw.c index a78ed868fe..fddd2ddb0d 100644 --- a/ompi/mpi/c/neighbor_alltoallw.c +++ b/ompi/mpi/c/neighbor_alltoallw.c @@ -62,14 +62,16 @@ int MPI_Neighbor_alltoallw(const void *sendbuf, const int sendcounts[], const MP err = ompi_comm_neighbors_count(comm, &indegree, &outdegree, &weighted); if (MPI_SUCCESS == err) { - for ( i = 0; i < outdegree; i++ ) { - memchecker_datatype(sendtypes[i]); + if (MPI_IN_PLACE != sendbuf) { + for ( i = 0; i < outdegree; i++ ) { + memchecker_datatype(sendtypes[i]); - ompi_datatype_type_extent(sendtypes[i], &send_ext); + ompi_datatype_type_extent(sendtypes[i], &send_ext); - memchecker_call(&opal_memchecker_base_isdefined, - (char *)(sendbuf)+sdispls[i]*send_ext, - sendcounts[i], sendtypes[i]); + memchecker_call(&opal_memchecker_base_isdefined, + (char *)(sendbuf)+sdispls[i]*send_ext, + sendcounts[i], sendtypes[i]); + } } for ( i = 0; i < indegree; i++ ) { memchecker_datatype(recvtypes[i]);