aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetReduce/src
diff options
context:
space:
mode:
authorschnetter <>2003-07-23 12:46:00 +0000
committerschnetter <>2003-07-23 12:46:00 +0000
commit769b5611c5e85fd09887925eacd71576724a6cbb (patch)
treeaa72ae3d06273d1e3f9364954e8df1f9a17d68e3 /Carpet/CarpetReduce/src
parentc20ff96ae512f8a48876322f1ec49bd6a40d4c72 (diff)
Adapt local array reduction to PUGH API.
darcs-hash:20030723124610-07bb3-0e89ee3460955e33f8ac3c2b90209e52b0093295.gz
Diffstat (limited to 'Carpet/CarpetReduce/src')
-rw-r--r--Carpet/CarpetReduce/src/reduce.cc44
1 files changed, 21 insertions, 23 deletions
diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc
index 6f71ac119..0c76f8348 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.27 2003/07/23 14:30:44 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.28 2003/07/23 14:46:10 schnetter Exp $
#include <assert.h>
#include <float.h>
@@ -22,7 +22,7 @@
#include "reduce.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.27 2003/07/23 14:30:44 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.28 2003/07/23 14:46:10 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetReduce_reduce_cc);
}
@@ -604,18 +604,16 @@ namespace CarpetReduce {
assert (dims[d]>=0);
}
- const bool do_local_reduction = num_inarrays == num_outvals;
-
int lsize = 1;
- if (do_local_reduction) {
- assert (num_inarrays == num_outvals);
- } else {
- for (int d=0; d<num_dims; ++d) {
- lsize *= dims[d];
- }
- assert (num_inarrays * lsize == num_outvals);
+ for (int d=0; d<num_dims; ++d) {
+ lsize *= dims[d];
+ }
+
+ const bool do_local_reduction = num_outvals == 1;
+
+ if (! do_local_reduction) {
+ assert (num_outvals == lsize);
}
- assert (num_inarrays * lsize == num_outvals);
vect<int,dim> mylsh, mynghostzones;
vect<vect<int,2>,dim> mybbox;
@@ -635,22 +633,23 @@ namespace CarpetReduce {
const int vartypesize = CCTK_VarTypeSize(outtype);
assert (vartypesize>=0);
- vector<char> myoutvals (vartypesize * num_outvals);
- vector<char> mycounts (vartypesize * num_outvals);
+ vector<char> myoutvals (vartypesize * num_inarrays * num_outvals);
+ vector<char> mycounts (vartypesize * num_inarrays * num_outvals);
- Initialise (cgh, proc, num_outvals, &myoutvals[0], outtype, &mycounts[0],
- red);
+ Initialise (cgh, proc, num_inarrays * num_outvals, &myoutvals[0], outtype,
+ &mycounts[0], red);
if (do_local_reduction) {
Reduce (cgh, proc, &mylsh[0], &mybbox[0][0], &mynghostzones[0],
num_inarrays, inarrays, intype,
- num_outvals, &myoutvals[0], outtype, &mycounts[0], red);
+ num_inarrays * num_outvals, &myoutvals[0], outtype,
+ &mycounts[0], red);
} else {
Copy (cgh, proc, lsize, num_inarrays, inarrays, intype,
- num_outvals, &myoutvals[0], outtype, &mycounts[0]);
+ num_inarrays * num_outvals, &myoutvals[0], outtype,
+ &mycounts[0]);
}
- Finalise (cgh, proc, num_outvals, outvals, outtype,
- &myoutvals[0], &mycounts[0],
- red);
+ Finalise (cgh, proc, num_inarrays * num_outvals, outvals, outtype,
+ &myoutvals[0], &mycounts[0], red);
return 0;
}
@@ -765,8 +764,7 @@ namespace CarpetReduce {
} END_LOCAL_COMPONENT_LOOP;
Finalise (cgh, proc, num_invars * num_outvals, outvals, outtype,
- &myoutvals[0], &mycounts[0],
- red);
+ &myoutvals[0], &mycounts[0], red);
return 0;
}