This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via a3dd5f401f3d038fd26eb6c93a7497566228213f (commit) from 7d59d14dd74072037b0daaa67612836974c0ff2b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/a3dd5f401f3d038fd26eb6c93a74975662... commit a3dd5f401f3d038fd26eb6c93a7497566228213f Author: Wesley Bland <[email protected]> Date: Tue Jan 20 18:55:08 2015 -0600 Fix for MPIX_COMM_AGREE to not return incorrect errors MPIX_Comm_agree should not return errors if the failed processes have all been acknowledged. Previously, it was returning errors unnecessarily, but this makes sure that the errcode is MPI_SUCCESS when appropriate. Signed-off-by: Huiwei Lu <[email protected]> diff --git a/src/mpi/comm/comm_agree.c b/src/mpi/comm/comm_agree.c index 9c5f669..e0b47d7 100644 --- a/src/mpi/comm/comm_agree.c +++ b/src/mpi/comm/comm_agree.c @@ -48,7 +48,7 @@ int MPIR_Comm_agree(MPID_Comm *comm_ptr, int *flag) /* First decide on the group of failed procs. */ mpi_errno = MPID_Comm_get_all_failed_procs(comm_ptr, &global_failed, MPIR_AGREE_TAG); - if (mpi_errno) errflag = 1; + if (mpi_errno) errflag = MPIR_ERR_PROC_FAILED; mpi_errno = MPIR_Group_compare_impl(failed_grp, global_failed, &result); if (mpi_errno) MPIU_ERR_POP(mpi_errno); diff --git a/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c b/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c index 43a2faf..a991435 100644 --- a/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c +++ b/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c @@ -84,7 +84,7 @@ static MPID_Group *bitarray_to_group(MPID_Comm *comm_ptr, uint32_t *bitarray) #define FCNAME MPIU_QUOTE(FUNCNAME) int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_group, int tag) { - int mpi_errno = MPI_SUCCESS; + int mpi_errno = MPI_SUCCESS, ret_errno; mpir_errflag_t errflag = MPIR_ERR_NONE; int i, j, bitarray_size; uint32_t *bitarray, *remote_bitarray; @@ -113,9 +113,9 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou if (comm_ptr->rank == 0) { for (i = 1; i < comm_ptr->local_size; i++) { /* Get everyone's list of failed processes to aggregate */ - mpi_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_UINT32_T, + ret_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_UINT32_T, i, tag, comm_ptr->handle, MPI_STATUS_IGNORE, &errflag); - if (mpi_errno) continue; + if (ret_errno) continue; /* Combine the received bitarray with my own */ for (j = 0; j < bitarray_size; j++) { @@ -127,9 +127,9 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou for (i = 1; i < comm_ptr->local_size; i++) { /* Send the list to each rank to be processed locally */ - mpi_errno = MPIC_Send(bitarray, bitarray_size, MPI_UINT32_T, i, + ret_errno = MPIC_Send(bitarray, bitarray_size, MPI_UINT32_T, i, tag, comm_ptr->handle, &errflag); - if (mpi_errno) errflag = MPIR_ERR_PROC_FAILED; + if (ret_errno) continue; } /* Convert the bitarray into a group */ ----------------------------------------------------------------------- Summary of changes: src/mpi/comm/comm_agree.c | 2 +- src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- MPICH primary repository