Fixes MEMCHECKER vs MPI_IN_PLACE in *alltoall*
cmr=v1.8.2:reviewer=bosilca This commit was SVN r31924.
Этот коммит содержится в:
родитель
c930e44bad
Коммит
1a17a2a960
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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]);
|
||||
}
|
||||
);
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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]);
|
||||
|
@ -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) {
|
||||
|
@ -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. */
|
||||
|
@ -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]);
|
||||
|
@ -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) {
|
||||
|
@ -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. */
|
||||
|
@ -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]);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user