diff options
author | schnetter <> | 2004-06-21 10:27:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-06-21 10:27:00 +0000 |
commit | 84633b9e56a28cfbca853c8137ba293ba7095331 (patch) | |
tree | 33f31451c907a659fb07498c7157641e1f00ba84 | |
parent | a9cd03de58dc6315cf114096164d9942059528af (diff) |
Don't call MPI reduction operators for complex numbers; call the real
Don't call MPI reduction operators for complex numbers; call the real
operators twice instead.
darcs-hash:20040621102753-07bb3-2391f206857569e3d6b38bef8dc7e66383446433.gz
-rw-r--r-- | Carpet/CarpetReduce/src/reduce.cc | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc index 6a100229c..0ed9bb12d 100644 --- a/Carpet/CarpetReduce/src/reduce.cc +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.38 2004/06/14 07:01:21 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.39 2004/06/21 12:27:53 schnetter Exp $ #include <assert.h> #include <float.h> @@ -23,7 +23,7 @@ #include "reduce.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.38 2004/06/14 07:01:21 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.39 2004/06/21 12:27:53 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetReduce_reduce_cc); } @@ -686,22 +686,24 @@ namespace CarpetReduce { counts.resize(vartypesize * num_outvals); } + const MPI_Datatype mpitype = CarpetSimpleMPIDatatype(outtype); + const int mpilength = CarpetSimpleMPIDatatypeLength(outtype); if (proc == -1) { - MPI_Allreduce ((void*)myoutvals, outvals, num_outvals, - CarpetMPIDatatype(outtype), red->mpi_op(), + MPI_Allreduce ((void*)myoutvals, outvals, mpilength*num_outvals, + mpitype, red->mpi_op(), CarpetMPIComm()); if (red->uses_cnt()) { - MPI_Allreduce ((void*)mycounts, &counts[0], num_outvals, - CarpetMPIDatatype(outtype), MPI_SUM, + MPI_Allreduce ((void*)mycounts, &counts[0], num_outvals*mpilength, + mpitype, MPI_SUM, CarpetMPIComm()); } } else { - MPI_Reduce ((void*)myoutvals, outvals, num_outvals, - CarpetMPIDatatype(outtype), red->mpi_op(), + MPI_Reduce ((void*)myoutvals, outvals, num_outvals*mpilength, + mpitype, red->mpi_op(), proc, CarpetMPIComm()); if (red->uses_cnt()) { - MPI_Reduce ((void*)mycounts, &counts[0], num_outvals, - CarpetMPIDatatype(outtype), MPI_SUM, + MPI_Reduce ((void*)mycounts, &counts[0], num_outvals*mpilength, + mpitype, MPI_SUM, proc, CarpetMPIComm()); } } |