aboutsummaryrefslogtreecommitdiff
path: root/Carpet/LoopControl
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-07-11 15:17:31 -0400
committerErik Schnetter <schnetter@gmail.com>2013-07-11 15:17:31 -0400
commite6e3f56a902da271e13b151aa4388b5bee325b0e (patch)
treef738030559c671120a656ad9b8615dd49c418310 /Carpet/LoopControl
parent3bd10ccb63673b78023687ae05505f62df20c12d (diff)
LoopControl: Correct logic that chooses tile sizes
Diffstat (limited to 'Carpet/LoopControl')
-rw-r--r--Carpet/LoopControl/src/loopcontrol.cc17
1 files changed, 8 insertions, 9 deletions
diff --git a/Carpet/LoopControl/src/loopcontrol.cc b/Carpet/LoopControl/src/loopcontrol.cc
index afe104db6..79ed2018c 100644
--- a/Carpet/LoopControl/src/loopcontrol.cc
+++ b/Carpet/LoopControl/src/loopcontrol.cc
@@ -719,17 +719,16 @@ void lc_control_init(lc_control_t *restrict const control,
const int loopsizes[LC_DIM] = {loopsize_i, loopsize_j, loopsize_k};
for (int d=0; d<LC_DIM; ++d) {
const int align = d==0 ? int(tilesize_alignment) : 1;
- for (int count=0; count<10; ++count) {
- params_key.tilesize.v[d] =
- randomui(align, max_size_factor * tilesizes[d], align);
- params_key.loopsize.v[d] =
- randomui(align, max_size_factor * loopsizes[d], align);
- if (params_key.loopsize.v[d] % params_key.tilesize.v[d] == 0) break;
- }
params_key.tilesize.v[d] =
- alignup(params_key.tilesize.v[0], align);
+ randomui(align, alignup(max_size_factor * tilesizes[d], align),
+ align);
+ const int tilesize = params_key.tilesize.v[d];
params_key.loopsize.v[d] =
- alignup(params_key.loopsize.v[d], params_key.tilesize.v[d]);
+ randomui(tilesize, alignup(max_size_factor * loopsizes[d], tilesize),
+ tilesize);
+ assert(moddown(params_key.tilesize.v[d], align) == 0);
+ assert(moddown(params_key.loopsize.v[d], params_key.tilesize.v[d]) ==
+ 0);
}
break;
}