From: Denis Davydov Date: Mon, 19 Mar 2018 14:10:51 +0000 (+0100) Subject: check that size of ArrayView in internal::all_reduce() is the same across the given... X-Git-Tag: v9.0.0-rc1~303^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3adda46fa269b5ee0b0ae744e425b7192f9dec4;p=dealii.git check that size of ArrayView in internal::all_reduce() is the same across the given communicator --- diff --git a/include/deal.II/base/mpi.templates.h b/include/deal.II/base/mpi.templates.h index 8302d7cdc9..09473cf03d 100644 --- a/include/deal.II/base/mpi.templates.h +++ b/include/deal.II/base/mpi.templates.h @@ -120,6 +120,21 @@ namespace Utilities #ifdef DEAL_II_WITH_MPI if (job_supports_mpi()) { +#ifdef DEBUG + { + const unsigned int rank = this_mpi_process(mpi_communicator); + const int size = values.size(); + int size_min = 0; + int size_max = 0; + int ierr2 = 0; + ierr2 = MPI_Reduce(&size, &size_min, 1, MPI_INT, MPI_MIN, 0, mpi_communicator); + AssertThrowMPI(ierr2); + ierr2 = MPI_Reduce(&size, &size_max, 1, MPI_INT, MPI_MAX, 0, mpi_communicator); + AssertThrowMPI(ierr2); + if (rank==0) + Assert (size_min == size_max, ExcMessage("values has different size across MPI processes.")); + } +#endif const int ierr = MPI_Allreduce (values != output ?