Skip to content

Commit f0db26e

Browse files
committed
Ledger (64): np8 redone (5.69 s/step), the np16 rung never ran and its numbers are withdrawn; Task 5 merged; Task 9 GPU gate passed after two gate bugs; uninitialized padding in the AMR restart metadata
1 parent 081ab44 commit f0db26e

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

docs/documentation/amr_action_plan.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,54 @@ possible while AMR aborts on the target machine at 1 rank, and every increment b
226226
on a compiler that does not reproduce it. It also means the ladder should add a CCE arm as soon as one
227227
exists, or the same class of breakage will keep accumulating undetected.
228228

229+
## 2026-09-04 (64) — GPU LADDER: np8 REDONE (5.69 s/step), np16 FAILED TO RUN AND ITS OLD NUMBERS ARE WITHDRAWN; Task 5 merged; Task 9's GPU gate passed once two bugs in the GATE were fixed; a pre-existing uninitialized-padding finding in the AMR restart metadata
230+
231+
**The ladder redo is HALF DONE, and I published the other half wrong before review caught it.** np8 (job 404469, one node,
232+
binary pinned from up/mega f1236231) genuinely reran: `== np=8 ok wall=1138.477` over 200 steps = **5.69 s/step**, GPU
233+
utilisation 30-46%. np16 (job 404470, two nodes) **never ran**: `pre.log` shows an OpenMPI TCP BTL error ("received
234+
unexpected process identifier"), pre_process hung cross-node, and SLURM killed the job at its 4 h limit with 0.00% GPU
235+
utilisation on all 8 GPUs and no `== np=16 ok` line anywhere. Because the job writes into the shared case directory, the
236+
September-2 `sim.log` from the OLD dirty-worktree binary (sha 1169b6fd) was left untouched -- and I read that stale file as
237+
the redone rung. **Every np16 number and every per-phase ratio in the first draft of this ledger is withdrawn**, including
238+
the headline "1.35x per doubling" and "rhs is flat": they compared a new-binary np8 against an old-binary np16 run from two
239+
days earlier. There is currently NO valid np16 point on the up/mega binary, so statement 1 has no GPU doubling to be judged
240+
against. np16 and np32 are resubmitted; the harness now deletes the case directory's `sim.log`/`pre.log` before a rung and
241+
aborts the job if the `== np=N ok` line is missing, so a failed rung can no longer be read as a result.
242+
243+
Lesson, the same one as the buffered-stdout scare: a rung is a measurement only if THIS job's own line is in the log. An
244+
exit state ("TIMEOUT") plus a plausible-looking file is not evidence, and I asserted "the job idled after the sim finished"
245+
without checking the sim had finished.
246+
247+
**Task 5 MERGED (081ab445, 7 commits, +36 LOC).** GPU gate on a healthy node: both oracle decks `[amr-xa]` identical to
248+
their CPU references and all 16 m1 decks compared at rtol 1e-12 with worst relative error 0.0. With the CPU 70/70 and the
249+
seed-1/seed-2 aborts from the branch gate, every wave family now carries an order-independent keyed tag.
250+
251+
**Task 9's GPU gate: PASSED, after two bugs in the gate itself.** (1) A trailing slash on the reference path mangled every
252+
candidate path (`run/00EB793AD/...`), so the comparator reported "0 files compared, N missing" as a failure; (2) the
253+
comparator failed a candidate for NaNs that the reference carries in the same slots. Both fixed in `cmp.py`. After the fix
254+
8 of 9 decks pass at rtol 1e-12: worst relative error 2.0e-3 on one AMR field of deck 00EB793A, 8.2e-13 on oracle_EF58E377,
255+
the rest at or below 1e-13.
256+
257+
**The 9th deck is a pre-existing finding, not a Task 9 defect.** `restart_data/lustre_amr_<step>.dat` on deck 78314D65
258+
carries 6 NaN words in fixed slots [163,164,167,228,231,267] plus 11 of 396 finite words that are uninitialized memory
259+
(denormals, max difference 1.16e+297). Proof it is not Task 9: the Task-5-only GPU binary and the Task-9 GPU binary write
260+
that file byte-identically; the difference is CPU-build vs GPU-build and appears with and without Task 9; and two runs of
261+
one binary are byte-identical (n=2 each, consistent with determinism rather than proving it). Consequence: the tier-1
262+
metadata redesign's gate ("np>=2 restart BYTE-compare") cannot pass until the AMR metadata buffer is zeroed before packing,
263+
and goal statement 3 wants those words gone. New plan item, not urgent -- nothing reads the padding today.
264+
265+
**Two nodes lost to host faults, and one measurement thrown away.** k004-007: `rocminfo` enumerated 0 HSA agents while
266+
`rocm-smi` showed 8 GPUs with leaked VRAM and every GPU-MPI start died in UCX with an integer divide by zero (observed
267+
live in-session; not captured in a log artifact, so it is a report, not a record). On k004-008 the row-6 240-step A/B
268+
logged 6,540 `Read -1, expected 7680000, errno = 14` EFAULT messages (19,596 counting all three buffer-size variants)
269+
while two CPU test suites shared the allocation; that node is already on the sick list, so the A/B was discarded and
270+
requeued as a job that excludes it (405052). Rule added: GPU_LOCK serialises timing harnesses against each other but not
271+
against concurrent CPU suites -- a timing A/B needs an otherwise-idle node, and `srun` step-creation failures under a
272+
shared allocation are an infrastructure result, never a code result. A third harness bug: the node-health guard I added
273+
yesterday counted `rocminfo | grep -c gfx90a` and demanded exactly 8, but rocminfo prints two matching lines per GPU, so
274+
it aborted three queued gates on healthy nodes (all three logs show "gfx90a agents: 16" on k004-003). Test a guard on a
275+
known-good node before it gates anything.
276+
229277
## 2026-09-04 (63) — TASK 9 COUNT GATE MET: the regrid row's doubling falls from 1.94x to 1.32x (np256 -> np512), the rebuild's per-rank calls from 43,816 to 201; Task 9's "4x slowdown" was an -O0 build
230278

231279
**The pair (qdens, one job per rung, gfortran -O3 pins, HEAD f9d7c9a4 vs the Task-11 binary on identical decks):**

0 commit comments

Comments
 (0)