aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <>2004-06-21 10:27:00 +0000
committerschnetter <>2004-06-21 10:27:00 +0000
commit84633b9e56a28cfbca853c8137ba293ba7095331 (patch)
tree33f31451c907a659fb07498c7157641e1f00ba84
parenta9cd03de58dc6315cf114096164d9942059528af (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.cc22
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());
}
}