You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ledger (100): the batched fine advance on by default where the case admits it, decided by the toolchain under the validator rules -- the Fortran defaults stay off; gated on the CPU AMR set and the GPU goldens; the CI GPU lanes are the compilers verdict
Copy file name to clipboardExpand all lines: docs/documentation/amr_action_plan.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -226,6 +226,44 @@ possible while AMR aborts on the target machine at 1 rank, and every increment b
226
226
on a compiler that does not reproduce it. It also means the ladder should add a CCE arm as soon as one
227
227
exists, or the same class of breakage will keep accumulating undetected.
228
228
229
+
## 2026-09-07 (100) — PRE-REGISTERED: the batched fine advance turns ON BY DEFAULT where the case admits it, decided by the toolchain, not by a Fortran default -- an amr case that leaves amr_batched_advance unset gets it with amr_bat_pad = 0.1 when a trial validation with them on passes (amr_device_pack does not ride along: its cap-32/96 A/B is owed first), so the default and the validator's prohibitions are the same rule; the CPU AMR set 58/58 on both commits and the GPU goldens 70/70 (none regenerated); the compilers' verdict is the next CI run's, where every AMR test now runs batched on CCE and NVHPC for the first time
230
+
231
+
**Why here and not in Fortran.** Ledger 99's probe flipped the three Fortran defaults and ran ten of 58 AMR cases into
232
+
the combinations the validator prohibits (``case_validator.py:1739-1750``: IB, IGR, stretched grids, cylindrical, the
233
+
per-block hooks) -- a Fortran default never meets the Python validator, which reads the case dictionary. The increment
234
+
(``task28/batch-default-py``, fbd72e66 on up/mega f5f51523, +54/-2 then the device_pack drop): ``apply_batching_default(params)``
235
+
in the validator module -- for an ``amr`` case with ``amr_batched_advance`` unset it validates a copy with the two flags on
236
+
and, only if that passes, sets them (an explicit ``amr_bat_pad`` is kept); ``MFCInputFile.generate`` calls
237
+
it before validation and prints one dim line when it applies (once per run: the first target's call sets the key, the
238
+
later ones see it). The Fortran defaults stay F. The harness's golden ``case.py`` files do not record the applied flags:
239
+
a golden's provenance is now toolchain-version-dependent, which is the same situation as every other toolchain-computed
240
+
input, and is why this ledger names the rule. ``./mfc.sh validate`` calls the validator directly and does not apply the
241
+
default (a case with ``amr_bat_pad > 0`` and the flag unset validates as an error there while running fine) -- noted, not
242
+
fixed here. Three validator unit tests
243
+
(admissible case gets the flags; ``ib``, ``igr``, ``stretch_x`` do not; an explicit F and a non-amr case are untouched);
244
+
the case.md row states the rule; precheck (which runs the validator's pytest, 54 passed) passed at both commits.
245
+
Predictions (amr-bench/notes/ledger_drafts/l100_prereg.md): CPU AMR set 58/58 with 48 batched; GPU goldens 70/70,
246
+
TOUCHED=0; no Fortran change, so no identity or timing gate; the CI GPU lanes green. THE 48 WAS WRONG, found before the
247
+
gate finished: applying the rule to the harness's own AMR dictionaries, the default reaches FOUR cases (churn growth
248
+
np=2 and np=4, the two pinned-max_grid_size multi-level cases) -- 27 fail the validator's ``amr_max_grid_size > 0``
249
+
rule (the tests leave the cap derived), 18 run ``amr_subcycle``, 5 ``ib``, 3 each chemistry / stretched / MHD, 2 each
250
+
``igr`` / Lagrangian bubbles / hypoelasticity, 1 cylindrical. Ledger 99's probe ran 48 batched only because a Fortran
251
+
default also bypasses the pinned-cap rule (the slab scratch is then sized to the global half-extent, which works and
252
+
wastes; whether that rule is stricter than the code needs is a question for the next entry, not this one). So this
253
+
default is a production-deck default (every timing deck pins the cap) and a four-test CI default.
254
+
255
+
**Gate (sbatch 408336 after 408333, amr-bench/gate_t28-408336.out; 408333 gated e8cecbdb, the same code with
256
+
``amr_device_pack`` still in the default).** End to end on one of the four (churn growth np=2, generated by the harness,
257
+
``./mfc.sh run ... -t pre_process`` on the gated CPU build): the toolchain prints the notice and proceeds; on the
258
+
droplet example (``amr_subcycle = T``) it does not, as the rule says. CPU AMR set on fbd72e66 (amdflang CPU, session node k004-003, 22:34-22:38): 58/58 -- 57 in the set plus churn np=2 re-run, because a by-hand check had removed that test's tracked golden directory minutes before (restored from git; the tree was clean before the queued gate started); on e8cecbdb (job 408333) 58/58 too. GPU goldens on fbd72e66 (job 408336, k004-008): 70/70, TOUCHED=0, four of them batched; on e8cecbdb (job 408333) 70/70, TOUCHED=0 as well.
259
+
260
+
**What the CI run on this head decides.** With the default on, the four admissible AMR tests on every lane run the
261
+
batched advance -- the CCE gpu-acc / gpu-omp and NVHPC gpu-acc / gpu-omp lanes have never run it; four cases is a thin
262
+
verdict, and widening it (a pinned cap on more AMR tests, or relaxing the pinned-cap rule) is the follow-up. A lane that fails only on
263
+
batched AMR cases is a backend defect of the batched path to record, and the default reverts to F for that lane (or
264
+
altogether) in the next entry. ``amr_device_pack`` stays off by default until its cap-32 / cap-96 A/B (GOAL v3 item 3). Pad's measurements: null at cap 32, -12 to -16 %% at
265
+
cap 64, null-to-small-win at cap 96 (ledgers 89, 90, 99).
266
+
229
267
## 2026-09-07 (99) — CAP 96 RE-MEASURED AND ITEM 3's DEFAULT PROBED: on 8644c8b4 amr_bat_pad = 0.10 at cap 96 is a NULL-TO-SMALL-WIN (-1.9 %% / -2.9 %% marginal step, both ON arms below both OFF, inside the +/-0.1 s floor; MPI wait flat where ledger 90 saw +14 %%) -- ledger 90's loss on 74764791 is NOT REPRODUCED and its phase tables show a regrid excursion and phase variance, memory pressure is not supported by VRAM sampling; and the coordinated batching default is NOT flippable: with the three flags on, 4 of 58 AMR cases abort on the flag's own uniform-grid rule, the two IGR cases and the four static-IBM cases run to completion and are WRONG against their per-block goldens by 1e-2 to 1e-1 absolute -- batched advance with ib or igr is a correctness defect that must be PROHIBITED before any default moves
230
268
231
269
**Question and instrument.** Ledger 89 measured ``amr_bat_pad = 0.10`` at cap 64 at -12 to -16 %% of wall; ledger 90 at
0 commit comments