- removed comment
LoopControl slows down with time when exloring new tilings
the attached parfile does nothing but apply the periodic boundary condition over and over again. The run slows down with time, and spends more and more time in Slab's apply routine (Periodic just uses lots of calls to Slab). Digging further this caused by LoopControl and in particular setting
LoopControl::settle_after_iteration = 0
restores the expected behaviour, namely that the runtime in Pariodic/apply increases linearly with the number of timesteps rather than superlinearly.
I blind guess for the culprit is the std::map inside of loopcontrol. I have done no further digging into the code though.
Keyword: LoopControl
Keyword: backport
Comments (6)
-
-
reporter - removed comment
is it possible that LoopControl gets confused since there is not obviously good way of tiling this? In slab the loop is just a copy and I would (naively) expect that since this is completely memory bandwidth dominated it does not matter how many threads compete in which manner for the limited bandwidth.
I attach LoopControl's statistics output for the parfile. As one can see there are very many params that loopcontrol explores. Since the loop in questions is small (just the boundary) the time to explore may well be comparable to the full runtime of the loop.
-
reporter - removed comment
Backport commit 7469d8a or an actual bugfix once it is known.
-
reporter - removed comment
Jim Healy reports that this slowdown did not occur in the Gauss release (http://lists.einsteintoolkit.org/pipermail/users/2014-January/003442.html).
I will backport commit 7469d8a on Monday unless objections are raised.
-
reporter - changed status to resolved
- removed comment
Applied as hash d757874cef9b1e47c8f49628c50785cf4c67a81d "LoopControl: Set the default for settle_after_iteration to 0" of Carpet.
-
reporter - edited description
- changed status to closed
- Log in to comment
Christian Ott reported a similar problem that was unrelated to thorn Slab, but where performance also improved when setting this parameter. As a work-around, I have now made this setting the default.