LoopControl slows down with time when exloring new tilings

Issue #1512 closed
Roland Haas created an issue

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)

  1. Erik Schnetter
    • removed 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.

  2. Roland Haas 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.

  3. Log in to comment