Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
888 commits
Select commit Hold shift + click to select a range
55f4001
Fail formatting when ffmt reports unmatched Fortran block structure
sbryngelson Aug 28, 2026
2b4da7d
Cluster from per-rank tag lists with a fused signature reduction (S3.1)
sbryngelson Aug 28, 2026
c468496
Bring the AMR plan documents current: ledger (38), verified invariant…
sbryngelson Aug 28, 2026
320fe10
Add a minimum box size (B0) and measure how much of the clustering tr…
sbryngelson Aug 28, 2026
e6a007b
Record the S3.2 design contract, the B1 merge-order prerequisite, and…
sbryngelson Aug 28, 2026
bdfc64d
Merge branch 'master' into up/mega
sbryngelson Aug 28, 2026
4f6ce85
Merge remote-tracking branch 'upstream/master' into up/mega
sbryngelson Aug 28, 2026
dc80eb6
Merge remote-tracking branch 'origin/up/mega' into up/mega
sbryngelson Aug 28, 2026
dc27e4a
Ledger (39): B0/S3.2a golden gate closed 69/69, and the np32 question…
sbryngelson Aug 28, 2026
eb6ba24
B1: canonicalise the clusterer's merge order, plus per-rank scope ins…
sbryngelson Aug 28, 2026
7251139
Ledger (40-41): the forest is the only O(P) term, and 'level-1 is fla…
sbryngelson Aug 28, 2026
58aa086
S3.3: cluster the level->=2 forest per owner, and exchange its tags p…
sbryngelson Aug 28, 2026
ee7758b
Ledger (42): level 1 is O(P) too, W1 is ~48 global block scans per ST…
sbryngelson Aug 28, 2026
263730c
W1a: iterate this rank's own blocks instead of scanning the global bl…
sbryngelson Aug 28, 2026
3cd90f2
Ledger (43): the MPI_TAG_UB wall is an assumed number, not a measured…
sbryngelson Aug 28, 2026
cefd317
Restart format v2: store the per-block owner and extents, not a per-R…
sbryngelson Aug 28, 2026
e20576c
Correct the MPI_TAG_UB claim in the source, and record the S3.2b/W5 f…
sbryngelson Aug 28, 2026
8bc027b
Ledger (44): AMR aborts on Frontier under CCE, pre-existing, and it o…
sbryngelson Aug 28, 2026
b055b0d
Give the Cray debug build bounds checking, which every other compiler…
sbryngelson Aug 28, 2026
8e10b44
Device-declare the module allocatables that @:ALLOCATE maps to the de…
sbryngelson Aug 28, 2026
fa20cba
Fix NVHPC build: a GPU_DECLARE must follow every symbol it names
sbryngelson Aug 28, 2026
4ade13c
Work around the CCE descriptor defect for the AMR scratch and batch a…
sbryngelson Aug 29, 2026
a72c125
Default amr_blocking_factor to 4 so the clusterer stops splitting int…
sbryngelson Aug 29, 2026
79fe684
Loosen the two churn-growth goldens to 1e-11, which CCE reassociation…
sbryngelson Aug 29, 2026
c09797a
Ledger: current state after B1, S3.3, W1a, restart v2 and the CCE fix
sbryngelson Aug 29, 2026
e2cb607
Let a rank-local clustering node skip its global reduction
sbryngelson Aug 29, 2026
299c368
Build the level-2 nesting coverage from owned blocks and one reduction
sbryngelson Aug 29, 2026
4a2edfb
Walk the clustering tree in level order so one depth needs one reduction
sbryngelson Aug 29, 2026
b865a9a
Reduce a narrow clustering node among the ranks it spans, not the who…
sbryngelson Aug 29, 2026
f0cde87
Ledger: S3.2b-2 landed, the W4 gate defect, item P restated, the box …
sbryngelson Aug 29, 2026
2fedf22
Poison a reflux register only when this rank holds one
sbryngelson Aug 29, 2026
708db3c
Loosen the churn goldens to 1e-9, the scale of their numerically-zero…
sbryngelson Aug 29, 2026
0187c68
Drop the GPU declares added for a CCE abort they did not fix
sbryngelson Aug 29, 2026
0fb9752
Count the bytes each rank receives from the two box-list gathers
sbryngelson Aug 29, 2026
00467d9
Iterate the recorded receive list instead of rescanning every block
sbryngelson Aug 29, 2026
9fd9592
Revert "Iterate the recorded receive list instead of rescanning every…
sbryngelson Aug 29, 2026
89f1b94
Reapply "Iterate the recorded receive list instead of rescanning ever…
sbryngelson Aug 29, 2026
9e5bdea
Drop the churn tolerance override: the failure is a flipped tag, not …
sbryngelson Aug 29, 2026
8f5d950
Drop the GPU_DECLARE on the move_alloc'd AMR device arrays (fixes Fro…
sbryngelson Aug 30, 2026
97eff75
Bracket the base-grid halo exchange as its own phase
sbryngelson Aug 30, 2026
007dd8c
Add the halo, memory and grid-efficiency scaling probes
sbryngelson Aug 30, 2026
d2accee
Bound the churn test's amplification window instead of chasing the th…
sbryngelson Aug 30, 2026
06f32d8
Match the dual-pass flux teardown guard to its allocation guard
sbryngelson Aug 30, 2026
45ba759
Zero flux_gsrc_hatR_rsx_vf at allocation
sbryngelson Aug 30, 2026
bf3de26
Zero pc_iter_count on host and device at allocation
sbryngelson Aug 30, 2026
15f0ddf
Fail closed in post_process on v2 AMR restart files
sbryngelson Aug 30, 2026
c2f3213
Drop the dead v2 guard from the serial post reader
sbryngelson Aug 30, 2026
68bcaf1
Check post_process's exit code in the test suite
sbryngelson Aug 30, 2026
c64351a
Read v2 AMR restart files in post_process
sbryngelson Aug 30, 2026
441d844
Reduce the grid-efficiency numerator across ranks
sbryngelson Aug 30, 2026
358ac1c
Skip L0 tiles in the post_process AMR reader instead of aborting
sbryngelson Aug 30, 2026
d705abb
Add the post-pad footprint counter and warn on silent box-set truncation
sbryngelson Aug 30, 2026
1b56e95
Correct three stale subcycle claims
sbryngelson Aug 30, 2026
1afba26
Ledger (44): two expert reviews reorder the program
sbryngelson Aug 30, 2026
51778c6
Skip skipped save indices in post_process instead of aborting
sbryngelson Aug 30, 2026
e860a5f
Exempt the CCE-only tracer-bubble failure from --test-all, tracked in…
sbryngelson Aug 30, 2026
b5c7ee4
Bracket the subcycle advance path with the lock-step phase ids
sbryngelson Aug 31, 2026
1301a91
Ledger (45): the cadence result was a broken control; multi-node was …
sbryngelson Aug 31, 2026
abb8574
Ledger (46): subcycle parity at matched fidelity; binned merge in, bi…
sbryngelson Aug 31, 2026
4d5f6ee
Use single-precision post output on --single builds in the test suite
sbryngelson Aug 31, 2026
c881e4e
Binned candidate merge: O(1)-removal survivor list + spatial prune, b…
sbryngelson Aug 31, 2026
08a8f49
Budget the store-growth device transient in bytes, not columns
sbryngelson Aug 31, 2026
805f26e
Fix single-precision post output at the site the test path actually uses
sbryngelson Aug 31, 2026
1e57e79
Count amr_slots in the [amr-mem] replicated-footprint report; ledger …
sbryngelson Aug 31, 2026
2f401b0
SUM-reduce the migration counters globally; ledger (48): four scaling…
sbryngelson Aug 31, 2026
3eeb080
Dirty-box merge continuation: eliminate the per-fusion pass restart
sbryngelson Sep 1, 2026
5f57b03
Revert the private+map(alloc) clause overlap (fixes the NVHPC gpu-omp…
sbryngelson Sep 1, 2026
17db501
Replace the cluster sort's insertion sort with a stable bottom-up mer…
sbryngelson Sep 1, 2026
2c4b2f4
Keyed-tags M0: an always-on order oracle over the F5 wave exchanges
sbryngelson Sep 1, 2026
c8c4f2c
Ledger (49): four landings, the oracle, and the phase transition
sbryngelson Sep 1, 2026
acaae35
W1 batch 1: epoch-keyed level-1 receive list replaces the fill-wave r…
sbryngelson Sep 1, 2026
dcfce95
W1 batch 2: padded receive list + two owned-list conversions
sbryngelson Sep 1, 2026
75a1220
Ledger (50): W1 underway; P-prime interim and the misanchored bands
sbryngelson Sep 1, 2026
1212778
W1 batch 3: the last six per-stage scans, and the parent-index cache
sbryngelson Sep 1, 2026
2a57b32
Ledger (51): W1 batch 3 lands; np1024 postmortem memory-gates the rung
sbryngelson Sep 1, 2026
0f6e9f0
M1 on family F5: keyed wave tags with plan-derived sequences
sbryngelson Sep 1, 2026
025da79
Ledger (52): the proper two-code tax test; MFC AMR overhead below AMR…
sbryngelson Sep 2, 2026
9d0ec27
Ledger (53): np512 A/B closed at -5.0%; gain is the dirty-box merge, …
sbryngelson Sep 2, 2026
7a5fbd1
Ledger (53): probe verdict, k002-005 is the slow node
sbryngelson Sep 2, 2026
4bd1747
Ledger (53): the clean np512 rung closes the constant-density ladder …
sbryngelson Sep 2, 2026
3368b16
Ledger (53): name the 256->512 growth term (regrid rebuild)
sbryngelson Sep 2, 2026
fd9f242
Compile only the Riemann solver the case selects under case optimization
sbryngelson Sep 2, 2026
e9e80c9
Ledger (54): expert review overturns ledger 52's inference; regrid is…
sbryngelson Sep 2, 2026
948298e
Ledger (55): AMReX at its own GPU-sane grids taxes 7.7-8.5x, not 20.5x
sbryngelson Sep 2, 2026
1c1658f
AMR: abort at init when a refined block's fine extent exceeds the ran…
sbryngelson Sep 2, 2026
49473b0
Ledger (56): fixture pointers
sbryngelson Sep 2, 2026
52d2469
Regrid rebuild: print the xchg-flag arrival skew and collective time …
sbryngelson Sep 3, 2026
594fcaa
Ledger (57): tax replication 12.4x +/-2% on k004-003, w1 control 24.1…
sbryngelson Sep 3, 2026
7934718
Ledger (58): Task 3 review corrections + steady-state AMR-arm profile…
sbryngelson Sep 3, 2026
5651257
Ledger (58) correction: coarse phase is the level-0 rhs; exchanges 0.…
sbryngelson Sep 3, 2026
7bb359a
AMR: fill the WENO coefficient tail past the coarse subdomain (fixes …
sbryngelson Sep 3, 2026
6b8d631
AMR: size the dual-pass and NC-interface flux scratch to idwbuff_alloc
sbryngelson Sep 3, 2026
d6c73c9
AMR: delete the pinned-cap init guard; the widened scratch is now com…
sbryngelson Sep 3, 2026
3afefa3
AMR: 3D np=8 golden with the box cap pinned above a rank's coarse ext…
sbryngelson Sep 3, 2026
889b2d6
AMR: trim the WENO tail-fill comment
sbryngelson Sep 3, 2026
d4c50b8
Ledger (59): describe the committed 20-step golden
sbryngelson Sep 3, 2026
a94607d
W1 batch 4: reflux-to-parent walks the owned/foreign-child union, not…
sbryngelson Sep 3, 2026
1905d65
W1 batch 4: level>=2 relax loop walks the owned list
sbryngelson Sep 3, 2026
17706eb
W1 batch 4: level-1 relax loop walks the owned list
sbryngelson Sep 3, 2026
bb197c0
Ledger (60): rdma_mpi under OpenMP (-4%), device pools falsified, the…
sbryngelson Sep 3, 2026
03b6c27
Bracket-free MPI-wait instrument: [mpiwait] table under rank_time_wrt
sbryngelson Sep 4, 2026
f123623
Allow rdma_mpi under OpenMP offload: the checker gate predates the OM…
sbryngelson Sep 3, 2026
62e45e7
Ledger (61): the analytic-IC pre_process trap, the bracket-free MPI-w…
sbryngelson Sep 4, 2026
ffdfd18
Ledger (62): Task 4 concluded (regrid arrival skew 1.9x/doubling), th…
sbryngelson Sep 4, 2026
ed2d06f
Ledger (63): Task 9 count gate met (regrid doubling 1.94x -> 1.32x, r…
sbryngelson Sep 4, 2026
56138f8
Audit: MFC_XA_SEED_FAM aims the seeded fold at one family's first key…
sbryngelson Sep 4, 2026
feacbe3
M1 on family F2W: keyed parent-fill wave tags
sbryngelson Sep 4, 2026
11184f8
M1 on families F1W/F3W: keyed stage-fill wave tags (bands 3 and 4)
sbryngelson Sep 4, 2026
8731e19
M1 on family F6W: keyed fine-fine halo wave tags
sbryngelson Sep 4, 2026
bbd566c
M1 on family F7W: keyed level-1 restrict wave tags
sbryngelson Sep 4, 2026
d8633d8
M1 on family F7BW: keyed parent restrict wave tags
sbryngelson Sep 4, 2026
081ab44
M1 comments: amr_tag_base survives only for regrid migration; freg wa…
sbryngelson Sep 4, 2026
f0db26e
Ledger (64): np8 redone (5.69 s/step), the np16 rung never ran and it…
sbryngelson Sep 4, 2026
78c4b60
Merge upstream/master into up/mega: adopt the centralized Riemann EOS…
sbryngelson Sep 4, 2026
307b62a
Merge remote-tracking branch 'origin/merge/master-0904' into up/mega
sbryngelson Sep 4, 2026
f17a9aa
Merge remote-tracking branch 'upstream/master' into up/mega
sbryngelson Sep 4, 2026
43234ac
Ledger (65): master merged and gated on the combination; the batched …
sbryngelson Sep 4, 2026
c1f859b
Ledger (66): retract the restart-metadata padding finding; the compar…
sbryngelson Sep 4, 2026
ce37c52
AMR: the lock-step fine advance walks the owned-block list (W1 leftov…
sbryngelson Sep 4, 2026
8806561
AMR: batched fine advance behind amr_batched_advance (stacked bridge,…
sbryngelson Sep 4, 2026
525d4b7
AMR: L0 tile migration marks the owned-block list dirty after writing…
sbryngelson Sep 4, 2026
b0f601c
AMR: amr_batched_advance review fixes (abort on the coefficient-recom…
sbryngelson Sep 4, 2026
c60ce8a
Ledger (67): the batched fine advance is merged behind a default-off …
sbryngelson Sep 5, 2026
f1f8410
AMR: report the batched-advance batch population as [amr-bat] under r…
sbryngelson Sep 5, 2026
32e66e6
Ledger (68): the MI210 GPU ladder, its MPI-wait split, and the mechan…
sbryngelson Sep 5, 2026
4799a4c
Ledger (69): goal v2 -- gated increments are pushed the session they …
sbryngelson Sep 5, 2026
13a18f0
Merge branch 'task10/batchcount' into up/mega
sbryngelson Sep 5, 2026
704582d
Walk the rebuild box loop over this rank's participants, not every bo…
sbryngelson Sep 4, 2026
b188e75
Walk the rebuild's old-block loops over the stashes this rank holds
sbryngelson Sep 4, 2026
560f21c
Check seam topology from this rank's owned blocks, not all pairs
sbryngelson Sep 4, 2026
e2fc388
Print per-rank seconds for the regrid sub-phases in the phase-rank table
sbryngelson Sep 4, 2026
1a4344d
Drop the participant role array: the consumers' own predicates alread…
sbryngelson Sep 4, 2026
83e484a
Ledger (70): load balance replayed offline at zero cost -- do not imp…
sbryngelson Sep 5, 2026
082f65f
Merge branch 'task9/rebuild' into up/mega
sbryngelson Sep 5, 2026
5f2e184
Ledger (71): Task 9 merged -- the regrid rebuild's O(P) rows fall fro…
sbryngelson Sep 5, 2026
3ed5bae
Add the amr_device_pack case flag (default F): requires amr, excludes…
sbryngelson Sep 5, 2026
2f650c3
F1/F2 coarse-patch gather: one fused pack/unpack kernel per family pe…
sbryngelson Sep 5, 2026
f64fea7
Ledger (72): the controlled ladder and the MI250X A/B, reviewed -- ba…
sbryngelson Sep 5, 2026
5e0f5ea
Ledger (73): the steady AMR excess is 1.44 s/step (2.1x target) with …
sbryngelson Sep 5, 2026
80225d4
Ledger (74): the step is only ~26% MPI wait (a lower bound), and the …
sbryngelson Sep 5, 2026
d238236
Merge branch 'up/mega' into task10/fusedpack
sbryngelson Sep 5, 2026
b126ee8
Ledger (75, 76): the fused gather packs are worth 0.14 s/step with 12…
sbryngelson Sep 5, 2026
23800cf
AMR: correct the amr_device_pack description (sends fuse per family, …
sbryngelson Sep 5, 2026
a11b4fe
Merge task10/fusedpack: fused F1/F2 gather packs behind the default-o…
sbryngelson Sep 5, 2026
3e208d3
Ledger (75): record the gates the fused-pack merge passed, and the 3 …
sbryngelson Sep 5, 2026
2d3381c
Ledger (76): the 8-GPU/node first doubling is 1.30x -- the 21 percent…
sbryngelson Sep 5, 2026
a4618f6
Ledger (77): my own hypothesis falsified -- the allocator setting rec…
sbryngelson Sep 5, 2026
e36a680
Ledger (75): all 70 AMR goldens pass on the merged tree -- the 3 chem…
sbryngelson Sep 5, 2026
4b534eb
Ledger (78): this node's intra-node MPI wait degraded 4.4x during the…
sbryngelson Sep 5, 2026
cede444
Ledger (78): name the canary script and record that its first design …
sbryngelson Sep 5, 2026
7babe17
AMR: delete amr_rg_gather and its 35 unreachable sites -- a flag noth…
sbryngelson Sep 5, 2026
97eedbb
Ledger (80): per-block cost is ~13 ms/block/step across six phases, p…
sbryngelson Sep 5, 2026
04fb2f0
Ledger (81): negative, pre-registered, falsifier fired -- pooling the…
sbryngelson Sep 5, 2026
9002f3c
AMR instrument: five bracket-free host-time rows (h:slot/shell/own/un…
sbryngelson Sep 5, 2026
8dc669a
AMD OpenMP lane: per-file opt-in defaultmap(present:allocatable) (MFC…
sbryngelson Sep 5, 2026
00caa29
Ledger (82): the per-block AMR cost is amdflang's per-launch re-map o…
sbryngelson Sep 5, 2026
256355c
Ledger (82) correction: unallocated module arrays abort under present…
sbryngelson Sep 5, 2026
a235b5a
AMD OpenMP lane: m_amr_registers.fpp opts in to defaultmap(present:al…
sbryngelson Sep 5, 2026
22b4fba
m_amr_registers opt-in header: fypp comments only (the formatter had …
sbryngelson Sep 5, 2026
11f4a77
Ledger (83): m_amr_registers opted in -- at most 2% at cap 32, nothin…
sbryngelson Sep 5, 2026
b5b1782
AMR: one device-resident slab table + one GPU_UPDATE per launch for t…
sbryngelson Sep 5, 2026
daaa80c
Ledger (84): one device slab table + one update per launch, pre-regis…
sbryngelson Sep 5, 2026
55c735d
AMR: amr_batched_gather (default F) -- pool the gathered coarse patch…
sbryngelson Sep 5, 2026
5ee8e1d
AMR: amr_batched_gather -- wire the F2 parent-fill wave to the pooled…
sbryngelson Sep 5, 2026
f920995
AMR: amr_batched_gather -- keep the per-member tables host-only so co…
sbryngelson Sep 5, 2026
f1510c7
AMR: amr_batched_gather -- the pooled unpack copies in only this wave…
sbryngelson Sep 5, 2026
ab091b8
amr_batched_gather rebase: restore the four preprocessor directives t…
sbryngelson Sep 6, 2026
6ddd8f1
Ledger (85): ledger 81 re-tested under the clause -- the pooled gathe…
sbryngelson Sep 6, 2026
f04a2e4
Ledger (86): scorecard item 2 re-measured on the pushed tip, two code…
sbryngelson Sep 6, 2026
9395593
Ledger (87): negative, pre-registered -- a per-block cost weight at K…
sbryngelson Sep 6, 2026
b3f12b0
Ledger (88): the per-block cost driver named from 66k batch records -…
sbryngelson Sep 6, 2026
20cdd96
AMR instrument: per-batch swap/rhs/restore/rk timing with member ids …
sbryngelson Sep 6, 2026
5e816d6
AMR batch instrument: open the per-rank log once (a logical flag; new…
sbryngelson Sep 6, 2026
36071e2
AMR batched advance: amr_bat_pad (default 0) lets a smaller block joi…
sbryngelson Sep 6, 2026
f29f8d3
amr_bat_pad: the batched capture reads member extents from amr_bat_me…
sbryngelson Sep 6, 2026
cea4202
amr_bat_pad: declare amr_bat_mext in m_global_parameters beside the o…
sbryngelson Sep 6, 2026
6bfa859
Ledger (89): the padded batch A/B -- batches -58%, summed rhs -16%, s…
sbryngelson Sep 6, 2026
04d1c6f
Ledger (90): amr_bat_pad at cap 96 (negative: wait up on every rank, …
sbryngelson Sep 6, 2026
6f6febb
Ledger (91): amr_lb_block_cost K=2 on top of padded batching -- null …
sbryngelson Sep 6, 2026
516399a
Ledger (92): the per-batch fixed cost named from a kernel+copy trace …
sbryngelson Sep 6, 2026
8c81242
amdflang: opt m_rhs and m_weno into defaultmap(present:allocatable) (…
sbryngelson Sep 6, 2026
09f7a17
Ledger (93): m_rhs and m_weno present:allocatable opt-in -- -0.09/-0.…
sbryngelson Sep 6, 2026
4e44eb8
AMR instruments: f_amr_wtime() wraps MPI_Wtime under MFC_MPI (the ser…
sbryngelson Sep 6, 2026
fa972ef
post_process: the AMR overlay no longer stores block-local mixture fi…
sbryngelson Sep 7, 2026
a10128b
test harness: post-process cases keep parallel_io = F on a no-MPI bui…
sbryngelson Sep 7, 2026
ea54255
Grid minima over the filled range: dx/dy/dz are allocated to the _all…
sbryngelson Sep 6, 2026
50b4e47
Ledger (94): the PR's CI read in full -- every Frontier lane's heap c…
sbryngelson Sep 7, 2026
b0b2919
amdflang: opt m_riemann_solver_hllc into defaultmap(present:allocatab…
sbryngelson Sep 6, 2026
5c68785
Ledger (95): m_riemann_solver_hllc present:allocatable opt-in behind …
sbryngelson Sep 7, 2026
d02ca91
Serial I/O: write bc_type.dat and bc_buffers.dat into every simulatio…
sbryngelson Sep 7, 2026
05e0a9d
post_process: the save-index gap skip under cfl_dt now probes the ser…
sbryngelson Sep 7, 2026
45f5312
post_process: write the rectilinear-grid coordinates with the Silo da…
sbryngelson Sep 7, 2026
5717670
post_process: the Lagrangian-bubble and immersed-body point meshes an…
sbryngelson Sep 7, 2026
e934894
Ledger (96): the PR's CI closed out -- the three remaining failure cl…
sbryngelson Sep 7, 2026
5f3ccfa
Merge upstream/master into up/mega: the Phoenix single-job benchmark …
sbryngelson Sep 7, 2026
8644c8b
AMR batched stage: skip the restore-side device push of the grid stat…
sbryngelson Sep 7, 2026
4c519b8
Ledger (97): restore-side grid-state device push skipped between cons…
sbryngelson Sep 8, 2026
67b5480
Ledger (98): two pre-registered negatives close the per-launch copy c…
sbryngelson Sep 8, 2026
b52479a
Ledger (99): cap 96 explained and re-measured -- amr_bat_pad is a sma…
sbryngelson Sep 8, 2026
f5f5152
Ledger (99) correction: the validator already prohibits batched advan…
sbryngelson Sep 8, 2026
e8cecbd
AMR: the batched fine advance turns on by default where the case admi…
sbryngelson Sep 8, 2026
fbd72e6
AMR batching default: amr_device_pack does not ride along (its cap-32…
sbryngelson Sep 8, 2026
79c108f
Ledger (100): the batched fine advance on by default where the case a…
sbryngelson Sep 8, 2026
16751fd
test harness: 27 AMR goldens get amr_max_grid_size pinned at the valu…
sbryngelson Sep 8, 2026
84dbdd0
Ledger (101): 27 AMR goldens pin amr_max_grid_size at the derived val…
sbryngelson Sep 8, 2026
a984dab
AMR batched advance: apply the static-body immersed-boundary correcti…
sbryngelson Sep 8, 2026
efced0f
AMR batched IB correction: hold amr_bat_n at 1 while the members are …
sbryngelson Sep 8, 2026
90defe8
Ledger (103): the batched advance skipped the post-RK hooks -- the st…
sbryngelson Sep 8, 2026
43cfccc
AMR fine RHS: zero body cells by the block's OWN fine markers (ib_mar…
sbryngelson Sep 8, 2026
f849a13
AMR golden: static IBM circle -> dynamic regrid -> batched pair (two …
sbryngelson Sep 8, 2026
95d5f08
AMR IB goldens regenerated for the fine-marker RHS zeroing (6 cases: …
sbryngelson Sep 8, 2026
04c5d82
Ledger (104): the fine RHS zeroed body cells by the coarse marker pat…
sbryngelson Sep 8, 2026
99e62cf
Ledger (102): item 4 scoped and measured -- the np=8 exchange is alre…
sbryngelson Sep 8, 2026
d397293
Toolchain default: amr_device_pack rides with the batching default wh…
sbryngelson Sep 8, 2026
2dc132c
Ledger (106): amr_device_pack A/B at caps 32 and 96 closes GOAL v3 it…
sbryngelson Sep 8, 2026
8a059f9
AMR regrid: the global box union is no longer truncated to amr_max_bl…
sbryngelson Sep 8, 2026
5986d9b
Ledger (105): the 2-node rung found a correctness cliff -- the global…
sbryngelson Sep 8, 2026
18e16b7
Ledger (107): scorecard item 2 re-measured on the shipped defaults, t…
sbryngelson Sep 8, 2026
bbf39c8
Ledger 107 same-session correction: the 'unbracketed sixth' was an ac…
sbryngelson Sep 8, 2026
b9b0039
AMR migration: the wire buffers are device-resident and, under rdma_m…
sbryngelson Sep 8, 2026
796f2fa
Ledger (108): migration off the host (GOAL v4 item 1) -- the regrid's…
sbryngelson Sep 8, 2026
62bd10e
Ledger (110): halo width is not where MFC's AMR excess sits -- the S0…
sbryngelson Sep 8, 2026
7e0d3ac
AMR regrid hysteresis (amr_snap, default 0 = off): a new box within a…
sbryngelson Sep 8, 2026
343470c
Ledger (109): regrid hysteresis (amr_snap, default off) -- a new box …
sbryngelson Sep 8, 2026
74bec70
Toolchain default: amr_snap = min(2, amr_buf - 2) rides with the batc…
sbryngelson Sep 8, 2026
2c23b6c
Ledger (111): scorecard item 2 with the regrid hysteresis on -- two c…
sbryngelson Sep 8, 2026
601e25a
Merge upstream master d2d8cac2 into up/mega: state-dependent equation…
sbryngelson Sep 8, 2026
4ac310f
Ledger (112): upstream master d2d8cac2 merged (state-dependent equati…
sbryngelson Sep 9, 2026
a79369e
Ledger (113): item 4's first read closed -- the two-node doubling cos…
sbryngelson Sep 9, 2026
343d57c
Ledger (115): the rep-to-rep climb is not node state and not intrinsi…
sbryngelson Sep 9, 2026
bde8fb1
Ledger (114): the two-node rung with the regrid hysteresis on -- 1.26…
sbryngelson Sep 9, 2026
08ae3e2
Ledger (117): the clean 2x statement -- two codes, one node, one wind…
sbryngelson Sep 9, 2026
2d84e7c
Ledger (118): the rung with all shipped defaults -- np8 5.14 -> 3.13 …
sbryngelson Sep 9, 2026
9cb243a
Docs: mark every 4.96 % noise-floor citation as superseded by the mea…
sbryngelson Sep 9, 2026
6c9c2d5
Ledger (120): the floor of the differenced protocol -- five back-to-b…
sbryngelson Sep 9, 2026
4f71ca4
AMR migration: bound the device-resident wire pools (2 GiB); above th…
sbryngelson Sep 9, 2026
503244c
Ledger (125) + AMR migration: bound the device-resident wire pools at…
sbryngelson Sep 9, 2026
7e958f1
AMR: hoist the coarse cons halo before the coarse RHS and convert ove…
sbryngelson Sep 9, 2026
c529bc5
Ledger (122) + AMR: the coarse cons halo runs before the coarse RHS a…
sbryngelson Sep 9, 2026
f20dbeb
AMR fold: retire the last comments naming the deleted freg wave
sbryngelson Sep 9, 2026
f4d8b7a
Ledger (123) + AMR fold: the level>=2 freg faces ride the restrict-pa…
sbryngelson Sep 9, 2026
3e79085
AMR rebuild: walk the boxes owner-interleaved per level (round-robin …
sbryngelson Sep 9, 2026
b4ae46b
Ledger (126) + AMR rebuild: walk the boxes owner-interleaved per leve…
sbryngelson Sep 9, 2026
85bb4a1
AMR seam wave: post at the top of the stage (sends read stage-entry i…
sbryngelson Sep 9, 2026
0e6805e
Ledger (129) + AMR seam wave: post at the top of the stage with priva…
sbryngelson Sep 9, 2026
1ddedac
Ledger (119): the np16 rebuild-free window probe -- the two-node wait…
sbryngelson Sep 9, 2026
7cb0e3f
Ledger 127: ownership stickiness at rebuild does not reduce migration…
sbryngelson Sep 9, 2026
a35a8ad
Ledger 130: clean-node np8 reads of the rendezvous cuts and the rebui…
sbryngelson Sep 9, 2026
f93fd33
Ledger 132: scorecard item 2 re-baselined on the fixed pin, one node,…
sbryngelson Sep 10, 2026
40173b2
Ledger 133: five np16 rungs on a healthy node pair (doublings 1.23-1.…
sbryngelson Sep 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .claude/rules/common-pitfalls.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,37 @@ covered in `docs/documentation/contributing.md`.
`contxb`/`momxb` shorthands are gone. Index positions depend on `model_eqns` and
enabled features — changing either moves ALL indices; never hard-code one.

## AMR levels (silent-index traps)

- **A level-`l` block's fine extent is `amr_ref_ratio**l * (coarse-region width) - 1`, NOT
`amr_ref_ratio*width`.** The `amr_ref_ratio*width` form is correct only for the level-1 initial
block; nested boxes compound by `amr_ref_ratio` per level (`amr_ref_ratio**level`). Every
fine-extent computation uses `amr_ref_ratio**amr_block_level` — geometry
(`s_set_amr_fine_geometry`), the restart-reader extent check, load-weight, `fmul`.
Assuming `amr_ref_ratio*width` rejects level≥2 blocks as corrupt (the exact bug that bit the
multi-level restart reader).
- **"coarse" in the AMR coupling routines means the block's PARENT level (`l-1`), not the
base grid (level 0).** For a level-1 block the parent IS L0; for level≥2 the block folds
to/from its parent block's fine array. `s_amr_gather_coarse_patch`,
`s_interpolate_coarse_to_fine`, and the restrict/reflux path all operate in the
parent-fine frame — assuming L0 silently corrupts level≥2 coupling.
- **The fine advance SWAPS the coarse grid globals (`m/n/p`, `idwint/idwbuff`, coords,
`acoustic_source`, `ab_active`) to a fine block and restores them after — see the SWAP
CONTRACT block at the `sw_*` declarations in `m_amr.fpp`.** Any module-level variable
DERIVED from the grid that a kernel reads during the fine advance must be swapped there or
refreshed per fine call at its use site; if it is `GPU_DECLARE`'d, its DEVICE copy must be
refreshed too. A stale device copy of coarse bounds reads out of range on the fine grid
under **CCE OpenACC only** (NVHPC/CCE-omp evaluate bounds host-side) — this was the `ab_int`
regression, fixed by an unconditional `GPU_UPDATE` in `s_compute_rhs`. `amr_rvw` (cyl_coord
radius weights) is the next candidate, currently safe only via a `m_checker.fpp` gate.
A CPU-only or NVHPC-acc pass proves NOTHING here; this class is CCE-acc-specific.

## GPU

- NEVER put a `GPU_PARALLEL_LOOP` inside a Fortran `block` construct: amdflang compiles
it clean but silently DROPS the region from the device image — the first launch dies
with `HSA_STATUS_ERROR_INVALID_SYMBOL_NAME` naming an `__omp_offloading_*` symbol.
Hoist the kernel into its own module subroutine.
- WARNING: do NOT wrap `GPU_LOOP` in `GPU_PARALLEL` for spatial loops — `GPU_LOOP` emits
empty directives on Cray and AMD, causing silent serial execution. Spatial loops always
use `GPU_PARALLEL_LOOP`/`END_GPU_PARALLEL_LOOP`. Macro API:
Expand All @@ -36,6 +65,15 @@ covered in `docs/documentation/contributing.md`.
- `@:ACC_SETUP_VFs(...)`/`@:ACC_SETUP_SFs(...)` GPU pointer setup compiles only under
Cray. Around MPI: `GPU_UPDATE(host=...)` before send, `GPU_UPDATE(device=...)` after
receive.
- **Never `GPU_UPDATE` a NON-CONTIGUOUS array section.** `GPU_UPDATE(device='[q%sf(a:b,
c:d, e:f)]')` on a sub-box emits correct OpenMP, but AMD flang copies it as
`size(section)` CONTIGUOUS elements starting at the first: only the leading run lands
where it is named and the rest overwrites neighbouring cells with stale data — no error,
no warning. A leading section (`arr(1:n)`, or a fixed trailing index like
`freg(d)%lo(:,:,:,k)`) IS contiguous and safe; anything that strides is not. To move a
sub-box, pack/unpack it with a device kernel (`s_l0_pack_unpack_block`,
`s_amr_restrict_pack_device`) — that is why those exist. Measured: 10 of 60 covered
cells delivered in the AMR cross-rank restrict, mass off 1.4e-5 per regrid.
- An array whose bound is a device global (`dimension(num_fluids)`, `dimension(num_species)`) may be
passed to a device routine **from a parallel-loop body, but not from inside another
`GPU_ROUTINE(parallelism='[seq]')`**. CCE OpenACC rejects the second form with
Expand Down
1 change: 1 addition & 0 deletions .lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,5 @@ exclude = [
"https://code\\.visualstudio\\.com/?$", # Root page returns 403 to automated requests
"https://stackoverflow\\.com", # Returns 403 to automated requests
"https://marketplace\\.visualstudio\\.com", # Returns 503 to automated requests
"_8md\\.html$", # Doxygen auto-links backticked *.md filenames in prose to per-file pages it never generates for markdown inputs; the real md_*.html page links are still checked
]
6 changes: 6 additions & 0 deletions .typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ extend-ignore-identifiers-re = [
AttributeIDSupressMenu = "AttributeIDSupressMenu"

[default.extend-words]
# Cray CCE spells it this way in the lib-4425 runtime error; quoted verbatim in the AMR ledger so the
# message stays greppable against what the machine actually prints.
Unitialized = "Unitialized"
INOUT = "INOUT"
WRONLY = "WRONLY"
nd = "nd"
Expand All @@ -22,6 +25,9 @@ TKE = "TKE"
HSA = "HSA"
infp = "infp"
Sur = "Sur"
thi = "thi" # AMR clustering local: tagged-box hi index (tlo/thi)
alo = "alo" # AMR clustering local: accepted-box lo array (alo/ahi)
thr = "thr" # AMR clustering local: min-separation merge threshold
equil = "equil" # abbreviation for "equilibrium" (flamelet chemistry)
chioces = "chioces" # typo for "choices" - tests constraint key validation
reqires = "reqires" # typo for "requires" - tests dependency key validation
Expand Down
6 changes: 6 additions & 0 deletions cmake/GPU.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,15 @@ elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
add_link_options("SHELL:-hkeepfiles")

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
# -h bounds: array-bounds and pointer checking, the Cray equivalent of gfortran's
# -fcheck=bounds,pointer / Intel's -check bounds / NVHPC's -Mbounds, all of which the
# debug branches above already set. Cray was the ONLY compiler whose debug build had no
# bounds checking, so an out-of-bounds write showed up here only as a later, unrelated
# allocation failing with an uninitialised descriptor.
add_compile_options(
"SHELL:-h acc_model=auto_async_none"
"SHELL: -h acc_model=no_fast_addr"
"SHELL: -h bounds"
"SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O0"
)
add_link_options("SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O0")
Expand Down
Loading