&ocean_debug_nml: forensic probes for the ocean dyn-core.
Every knob defaults off ⇒ bit-identical (untaken branches); all
are HEAVY when on (device waits / serialised apply chains) —
investigation tools, not production diagnostics. Output is
greppable fixed-format rows (BUDGET / KE_ATTR / CHKSUM /
HOTFACE); reader: tools/read_chksum.py.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | budget | = | .false. |
Per-stage BT power-budget probe (BUDGET rows). |
|
| logical, | public | :: | chksum | = | .false. |
MOM6-style per-phase field checksums (CHKSUM rows) + the HOTFACE argmax-face anatomy at the tendency seams — the first-diverging-operator / non-finite-minting attribution probe. Device waits + reductions per phase seam. |
|
| integer, | public | :: | chksum_end_step | = | 0 |
Last outer step the chksum probe samples (0 = no upper bound). |
|
| logical, | public | :: | chksum_interior | = | .false. |
Restrict every chksum reduction to PHYSICAL cells (drop the
ghost ring). Default Turn this ON to compare a 1-rank run against an N-rank run.
With ghosts included the reduced value set genuinely differs
between decompositions even for CORRECT code, so the
otherwise decomposition-invariant |
|
| integer, | public | :: | chksum_start_step | = | 0 |
First outer step the chksum probe samples (0 = from start). |
|
| logical, | public | :: | ke_attr | = | .false. |
Per-segment layer-KE attribution meter (KE_ATTR rows) — serialises the velocity-apply chain while sampling. |
|
| integer, | public | :: | ke_attr_end_step | = | 0 |
Last outer step the KE meter samples (0 = no upper bound). |
|
| integer, | public | :: | ke_attr_start_step | = | 0 |
First outer step the KE meter samples (0 = from start). |
type :: ocean_debug_config_t !! `&ocean_debug_nml`: forensic probes for the ocean dyn-core. !! Every knob defaults off ⇒ bit-identical (untaken branches); all !! are HEAVY when on (device waits / serialised apply chains) — !! investigation tools, not production diagnostics. Output is !! greppable fixed-format rows (BUDGET / KE_ATTR / CHKSUM / !! HOTFACE); reader: `tools/read_chksum.py`. logical :: budget = .false. !! Per-stage BT power-budget probe (BUDGET rows). logical :: ke_attr = .false. !! Per-segment layer-KE attribution meter (KE_ATTR rows) — !! serialises the velocity-apply chain while sampling. integer :: ke_attr_start_step = 0 !! First outer step the KE meter samples (0 = from start). integer :: ke_attr_end_step = 0 !! Last outer step the KE meter samples (0 = no upper bound). logical :: chksum = .false. !! MOM6-style per-phase field checksums (CHKSUM rows) + the !! HOTFACE argmax-face anatomy at the tendency seams — the !! first-diverging-operator / non-finite-minting attribution !! probe. Device waits + reductions per phase seam. integer :: chksum_start_step = 0 !! First outer step the chksum probe samples (0 = from start). integer :: chksum_end_step = 0 !! Last outer step the chksum probe samples (0 = no upper bound). logical :: chksum_interior = .false. !! Restrict every chksum reduction to PHYSICAL cells (drop the !! ghost ring). Default `.false.` = legacy whole-array output. !! !! Turn this ON to compare a 1-rank run against an N-rank run. !! With ghosts included the reduced value set genuinely differs !! between decompositions even for CORRECT code, so the !! otherwise decomposition-invariant `bits` column is unusable !! for that comparison. Interior-only makes the value set !! identical by construction, and `bits` is an exact integer !! (associative, commutative) reduction — so a correct run !! yields the SAME `bits` on any layout, and the first stage !! whose `bits` disagree is where a decomposition bug lives. end type ocean_debug_config_t