[Users] Checkpoint/recovery inconsistencies

Erik Schnetter schnetter at cct.lsu.edu
Tue Jul 19 21:59:53 CDT 2011

On Tue, Jul 19, 2011 at 10:43 PM, Luca Baiotti
<baiotti at ile.osaka-u.ac.jp> wrote:
> This is really good news! Thank you and congratulations. It was really a
> long-standing problem (and hard to investigate).
> Questions:
> - In the diff, which version of carpet do the changes refer to? (All?)

This refers to the Mercurial version.

> - When do you plan to commit the changes to the repositories?

Very soon.


> Thanks,
> Luca
> On 20/7/11 11:21 AM, Erik Schnetter wrote:
>> Christian Ott, Peter Diener, and I tracked down a set of
>> checkpointing/recovery inconsistencies in the Einstein Toolkit. This
>> means that many variables had different values after checkpointing and
>> then recovering them, which should not be the case. We were careful
>> not to use MPI, OpenMP, or any kind of compiler optimisations, so
>> these inconsistencies represent real changes.
>> We found a series of problems, and we have now one possible
>> correction. Unfortunately, this requires changes to several thorns,
>> mostly to schedule.ccl declarations, but also to Carpet. In addition,
>> we find that it is impossible to re-calculate PseudoEvolution
>> variables after recovery -- they have to be checkpointed. In other
>> words, variables such as ADMBase, TmunuBase, or other variables with 3
>> timelevels need to be checkpointed to be consistent.
>> (Many of the inconsistencies are small, and are caused by differences
>> in the discretisation error. That is, they will vanish in the
>> continuum limit. However, one of the design principles of the Einstein
>> Toolkit is that results should be as much as possible independent of
>> the number of MPI processes, OpenMP threads, and
>> checkpointing/recovery. Disabling checkpointing of such variables
>> could be implemented depending on a parameter, which would also need
>> to ensure that these variables are then recalculated -- with slightly
>> different values -- after recovery. In particular, this would require
>> a new schedule bin in Carpet that is executed after recovery for all
>> timelevels, or alternatively a new schedule option that requests this
>> behaviour from Carpet.)
>> The necessary changes to correct these inconsistencies are in detail:
>> 1. All variables with 3 timelevels need to be checkpointed. This
>> affects ADMBase, TmunuBase, ML_ADMConstraints, ML_ADMQuantities, and
>> the BSSN constraints in ML_BSSN. Since this depends on the number of
>> timelevels, care has to be taken to make the right decision at run
>> time.
>> 2. The schedule group MoL_PseudoEvolution must not be scheduled in
>> post_recover_variables -- since these variables are checkpointed, they
>> do not need to be recalculated.
>> 3. Carpet cannot execute the post_recover_variables bin on the past
>> timelevels, since applying boundary conditions to past timelevels
>> includes prolongation, and the time interpolation necessary for this
>> would have a different discretisation error.
>> 4. Carpet traversed the PostRestrict bin in the incorrect order. It
>> traversed from finest to coarsest (the same order in which restriction
>> has to be applied), but because fine grid boundaries may be
>> interpolate from coarse grid boundaries, this bin must be traversed
>> from coarsest to finest.
>> 5. The scheduling of GRHydro and HydroBase is off in certain places.
>> 6. The scheduling of NaNChecker leaves the NaNmask uninitialised after recovery.
>> 7. The scheduling of various Kranc generated thorns is off in certain places.
>> 8. Certain schedule items requiring the ADMBase variables are executed
>> in the incorrect order, i.e. before the ADMBase variables were
>> available.
>> I attach a diff of a possible set of corrections. However:
>> - This diff does not correct handling the TmunuBase variables -- they
>> are still not checkpointed if they have multiple timelevels. I believe
>> this should be done by thorn TmunuBase itself.
>> - Similarly, handling checkpointing of the ADMBase variables should be
>> moved from ML_BSSN_Helper to ADMBase itself.
>> - I think a new schedule group MoL_PseudoEvolutionBoundaries would
>> make sense, as this would simplify the schedule of thorns which use
>> MoL_PseudoEvolution.
>> -erik
> _______________________________________________
> Users mailing list
> Users at einsteintoolkit.org
> http://lists.einsteintoolkit.org/mailman/listinfo/users

Erik Schnetter <schnetter at cct.lsu.edu>   http://www.cct.lsu.edu/~eschnett/

More information about the Users mailing list