1
1

Get rid of the compiler warning message when --enable-picky is used.

Do the checks according to inter/intracommunicator flags.

This commit was SVN r20063.
Этот коммит содержится в:
Shiqing Fan 2008-12-03 17:44:21 +00:00
родитель 0b83ab39e5
Коммит d06604c258
10 изменённых файлов: 172 добавлений и 77 удалений

Просмотреть файл

@ -44,6 +44,7 @@ int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
MEMCHECKER(
int rank;
ptrdiff_t ext;
rank = ompi_comm_rank(comm);
ompi_ddt_type_extent(recvtype, &ext);
@ -51,7 +52,9 @@ int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
memchecker_comm(comm);
/* check whether the actual send buffer is defined. */
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined, recvbuf+rank*ext, recvcount, recvtype);
memchecker_call(&opal_memchecker_base_isdefined,
(char *)(recvbuf)+rank*ext,
recvcount, recvtype);
} else {
memchecker_datatype(sendtype);
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);

Просмотреть файл

@ -53,14 +53,14 @@ int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
/* check whether the receive buffer is addressable. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isaddressable,
recvbuf+displs[i]*ext,
(char *)(recvbuf)+displs[i]*ext,
recvcounts[i], recvtype);
}
/* check whether the actual send buffer is defined. */
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined,
recvbuf+displs[rank]*ext,
(char *)(recvbuf)+displs[rank]*ext,
recvcounts[rank], recvtype);
} else {
memchecker_datatype(sendtype);

Просмотреть файл

@ -57,11 +57,11 @@ int MPI_Alltoallv(void *sendbuf, int *sendcounts, int *sdispls,
for ( i = 0; i < size; i++ ) {
/* check if send chunks are defined. */
memchecker_call(&opal_memchecker_base_isdefined,
sendbuf+sdispls[i]*send_ext,
(char *)(sendbuf)+sdispls[i]*send_ext,
sendcounts[i], sendtype);
/* check if receive chunks are addressable. */
memchecker_call(&opal_memchecker_base_isaddressable,
recvbuf+rdispls[i]*recv_ext,
(char *)(recvbuf)+rdispls[i]*recv_ext,
recvcounts[i], recvtype);
}
);

Просмотреть файл

@ -57,13 +57,11 @@ int MPI_Alltoallw(void *sendbuf, int *sendcounts, int *sdispls,
ompi_ddt_type_extent(recvtypes[i], &recv_ext);
memchecker_call(&opal_memchecker_base_isdefined,
sendbuf+sdispls[i]*send_ext,
sendcounts[i],
sendtypes[i]);
(char *)(sendbuf)+sdispls[i]*send_ext,
sendcounts[i], sendtypes[i]);
memchecker_call(&opal_memchecker_base_isaddressable,
recvbuf+sdispls[i]*recv_ext,
recvcounts[i],
recvtypes[i]);
(char *)(recvbuf)+sdispls[i]*recv_ext,
recvcounts[i], recvtypes[i]);
}
);

Просмотреть файл

@ -41,13 +41,21 @@ int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
MEMCHECKER(
memchecker_datatype(datatype);
memchecker_comm(comm);
if( ompi_comm_rank(comm) == root || MPI_ROOT == root ) {
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype);
}
if( MPI_PROC_NULL != root ) {
if (OMPI_COMM_IS_INTRA(comm)) {
if (ompi_comm_rank(comm) == root) {
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype);
}
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, buffer, count, datatype);
memchecker_call(&opal_memchecker_base_isaddressable, buffer, count, datatype);
} else {
if (MPI_ROOT == root) {
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype);
} else if (MPI_PROC_NULL != root) {
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, buffer, count, datatype);
}
}
);

Просмотреть файл

@ -45,22 +45,41 @@ int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
MEMCHECKER(
int rank;
ptrdiff_t ext;
rank = ompi_comm_rank(comm);
ompi_ddt_type_extent(recvtype, &ext);
memchecker_comm(comm);
if (ompi_comm_rank(comm) == root || MPI_ROOT == root) {
memchecker_datatype(recvtype);
/* check whether root's receive buffer is addressable/defined(MPI_IN_PLACE). */
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined, recvbuf+rank*ext, recvcount, recvtype);
if(OMPI_COMM_IS_INTRA(comm)) {
if(ompi_comm_rank(comm) == root) {
/* check whether root's send buffer is defined. */
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined,
(char *)(recvbuf)+rank*ext,
recvcount, recvtype);
} else {
memchecker_datatype(sendtype);
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
memchecker_datatype(recvtype);
/* check whether root's receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
} else {
memchecker_datatype(sendtype);
/* check whether send buffer is defined on other processes. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
} else {
if (MPI_ROOT == root) {
memchecker_datatype(recvtype);
/* check whether root's receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
} else if (MPI_PROC_NULL != root) {
memchecker_datatype(sendtype);
/* check whether send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
/* check whether the send buffer is defined. */
if (MPI_PROC_NULL != root && MPI_IN_PLACE != sendbuf) {
memchecker_datatype(sendtype);
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
);

Просмотреть файл

@ -49,26 +49,47 @@ int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
ompi_ddt_type_extent(recvtype, &ext);
memchecker_comm(comm);
if (ompi_comm_rank(comm) == root || MPI_ROOT == root) {
memchecker_datatype(recvtype);
/* check whether each receive buffer is addressable/defined(MPI_IN_PLACE). */
if(MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined,
recvbuf+displs[rank]*ext,
recvcounts[rank], recvtype );
if(OMPI_COMM_IS_INTRA(comm)) {
if(ompi_comm_rank(comm) == root) {
/* check whether root's send buffer is defined. */
if (MPI_IN_PLACE == sendbuf) {
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isdefined,
(char *)(recvbuf)+displs[i]*ext,
recvcounts[i], recvtype);
}
} else {
memchecker_datatype(sendtype);
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
memchecker_datatype(recvtype);
/* check whether root's receive buffer is addressable. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isaddressable,
(char *)(recvbuf)+displs[i]*ext,
recvcounts[i], recvtype);
}
} else {
memchecker_datatype(sendtype);
/* check whether send buffer is defined on other processes. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isaddressable,
recvbuf+displs[i]*ext,
recvcounts[i], recvtype);
} else {
if (MPI_ROOT == root) {
memchecker_datatype(recvtype);
/* check whether root's receive buffer is addressable. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isaddressable,
(char *)(recvbuf)+displs[i]*ext,
recvcounts[i], recvtype);
}
} else if (MPI_PROC_NULL != root) {
memchecker_datatype(sendtype);
/* check whether send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
}
/* check whether send buffer is defined on all processses. */
if (MPI_PROC_NULL != root && MPI_IN_PLACE != sendbuf ) {
memchecker_datatype(sendtype);
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
);
if (MPI_PARAM_CHECK) {

Просмотреть файл

@ -43,19 +43,30 @@ int MPI_Reduce(void *sendbuf, void *recvbuf, int count,
MEMCHECKER(
memchecker_datatype(datatype);
memchecker_comm(comm);
/* check whether root's receive buffer is addressable. */
if( ompi_comm_rank(comm) == root || MPI_ROOT == root ) {
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined, recvbuf, count, datatype);
} else {
if(OMPI_COMM_IS_INTRA(comm)) {
if(ompi_comm_rank(comm) == root) {
/* check whether root's send buffer is defined. */
if (MPI_IN_PLACE == sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined, recvbuf, count, datatype);
} else {
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, count, datatype);
}
/* check whether root's receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, count, datatype);
} else {
/* check whether send buffer is defined on other processes. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, count, datatype);
}
} else {
if (MPI_ROOT == root) {
/* check whether root's receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, count, datatype);
} else if (MPI_PROC_NULL != root) {
/* check whether send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, count, datatype);
}
}
/* check whether send buffer is defined on all processes. */
if (MPI_PROC_NULL != root && MPI_IN_PLACE != sendbuf) {
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, count, datatype);
}
);

Просмотреть файл

@ -45,15 +45,31 @@ int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype,
MEMCHECKER(
memchecker_comm(comm);
if (ompi_comm_rank(comm) == root || MPI_ROOT == root) {
memchecker_datatype(sendtype);
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
}
/* check whether the receive buffer is addressable. */
if (MPI_PROC_NULL != root && MPI_IN_PLACE != recvbuf) {
memchecker_datatype(recvtype);
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
if(OMPI_COMM_IS_INTRA(comm)) {
if(ompi_comm_rank(comm) == root) {
memchecker_datatype(sendtype);
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
if(MPI_IN_PLACE != recvbuf) {
memchecker_datatype(recvtype);
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
} else {
memchecker_datatype(recvtype);
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
} else {
if(MPI_ROOT == root) {
memchecker_datatype(sendtype);
/* check whether root's send buffer is defined. */
memchecker_call(&opal_memchecker_base_isdefined, sendbuf, sendcount, sendtype);
} else if (MPI_PROC_NULL != root) {
memchecker_datatype(recvtype);
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
}
);

Просмотреть файл

@ -47,20 +47,39 @@ int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs,
ompi_ddt_type_extent(recvtype, &ext);
memchecker_comm(comm);
if (ompi_comm_rank(comm) == root || MPI_ROOT == root) {
memchecker_datatype(sendtype);
/* check each send buffer, whether they are defined. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isdefined,
sendbuf+displs[i]*ext,
sendcounts[i], sendtype);
if(OMPI_COMM_IS_INTRA(comm)) {
if(ompi_comm_rank(comm) == root) {
memchecker_datatype(sendtype);
/* check whether root's send buffer is defined. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isdefined,
(char *)(sendbuf)+displs[i]*ext,
sendcounts[i], sendtype);
}
if(MPI_IN_PLACE != recvbuf) {
memchecker_datatype(recvtype);
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
} else {
memchecker_datatype(recvtype);
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
} else {
if(MPI_ROOT == root) {
memchecker_datatype(sendtype);
/* check whether root's send buffer is defined. */
for (i = 0; i < size; i++) {
memchecker_call(&opal_memchecker_base_isdefined,
(char *)(sendbuf)+displs[i]*ext,
sendcounts[i], sendtype);
}
} else if (MPI_PROC_NULL != root) {
/* check whether receive buffer is addressable. */
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
}
/* check whether the receive buffer is addressable */
if (MPI_PROC_NULL != root && MPI_IN_PLACE != recvbuf) {
memchecker_datatype(recvtype);
memchecker_call(&opal_memchecker_base_isaddressable, recvbuf, recvcount, recvtype);
}
);
if (MPI_PARAM_CHECK) {