chksum_probe_t Derived Type

type, public :: chksum_probe_t

Config + one-shot header state. Lives on ocean_dyn_t; host-only (never device-mapped).


Inherited by

type~~chksum_probe_t~~InheritedByGraph type~chksum_probe_t chksum_probe_t type~ocean_dyn_t ocean_dyn_t type~ocean_dyn_t->type~chksum_probe_t chksum_probe type~ocean_state_t ocean_state_t type~ocean_state_t->type~ocean_dyn_t dyn type~ocean_engine_t ocean_engine_t type~ocean_engine_t->type~ocean_state_t state type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~ocean_state_t state type~ocean_handle_t->type~ocean_engine_t engine

Components

Type Visibility Attributes Name Initial
logical, public :: enable = .false.

Master gate — &ocean_debug_nml chksum.

integer, public :: end_step = 0

Last outer step to sample (0 = no upper bound).

logical, public :: header_done = .false.

Column-header row emitted.

logical, public :: interior = .false.

Restrict every reduction to PHYSICAL cells (exclude the whole ghost ring). Default .false. = legacy whole-array behaviour, so existing logs are unchanged.

Set this to make bits a valid 1-rank-vs-N-rank gate. With ghosts included the reduced SET of values differs between decompositions even for correct code (ghosts hold BC junk on one layout and neighbour data on another), so a bits diff is meaningless. Restricted to physical cells the set is identical by construction, and since the POPCNT reduction is exact integer addition — associative and commutative — a correct run gives the SAME bits on any decomposition. A stage-by-stage diff then localises a decomposition bug to the first seam whose bits disagree.

integer, public :: start_step = 0

First outer step to sample (0 = from the start).


Source Code

   type :: chksum_probe_t
      !! Config + one-shot header state.  Lives on `ocean_dyn_t`;
      !! host-only (never device-mapped).
      logical :: enable = .false.
         !! Master gate — `&ocean_debug_nml chksum`.
      integer :: start_step = 0
         !! First outer step to sample (0 = from the start).
      integer :: end_step = 0
         !! Last outer step to sample (0 = no upper bound).
      logical :: header_done = .false.
         !! Column-header row emitted.
      logical :: interior = .false.
         !! Restrict every reduction to PHYSICAL cells (exclude the whole
         !! ghost ring).  Default `.false.` = legacy whole-array
         !! behaviour, so existing logs are unchanged.
         !!
         !! Set this to make `bits` a valid 1-rank-vs-N-rank gate.  With
         !! ghosts included the reduced SET of values differs between
         !! decompositions even for correct code (ghosts hold BC junk on
         !! one layout and neighbour data on another), so a `bits` diff
         !! is meaningless.  Restricted to physical cells the set is
         !! identical by construction, and since the POPCNT reduction is
         !! exact integer addition — associative and commutative — a
         !! correct run gives the SAME `bits` on any decomposition.
         !! A stage-by-stage diff then localises a decomposition bug to
         !! the first seam whose `bits` disagree.
   end type chksum_probe_t