rdb_ocean_halo_counters Module


Uses

  • module~~rdb_ocean_halo_counters~~UsesGraph module~rdb_ocean_halo_counters rdb_ocean_halo_counters iso_fortran_env iso_fortran_env module~rdb_ocean_halo_counters->iso_fortran_env pic_strings pic_strings module~rdb_ocean_halo_counters->pic_strings

Used by

  • module~~rdb_ocean_halo_counters~~UsedByGraph module~rdb_ocean_halo_counters rdb_ocean_halo_counters module~rdb_barotropic_substep rdb_barotropic_substep module~rdb_barotropic_substep->module~rdb_ocean_halo_counters module~rdb_ocean_halo rdb_ocean_halo module~rdb_barotropic_substep->module~rdb_ocean_halo module~rdb_ocean_console_stats rdb_ocean_console_stats module~rdb_ocean_console_stats->module~rdb_ocean_halo_counters module~rdb_ocean_halo->module~rdb_ocean_halo_counters module~rdb_ocean_halo_state rdb_ocean_halo_state module~rdb_ocean_halo_state->module~rdb_ocean_halo_counters module~rdb_ocean_halo_state->module~rdb_ocean_halo module~rdb_continuity rdb_continuity module~rdb_continuity->module~rdb_ocean_halo module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_console_stats module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_driver->module~rdb_ocean_dyn module~rdb_ocean_engine rdb_ocean_engine module~rdb_driver->module~rdb_ocean_engine module~rdb_ocean_state rdb_ocean_state module~rdb_driver->module~rdb_ocean_state module~rdb_ice_evp rdb_ice_evp module~rdb_ice_evp->module~rdb_ocean_halo module~rdb_ice_ocean_coupler rdb_ice_ocean_coupler module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state module~rdb_ice_transport rdb_ice_transport module~rdb_ice_transport->module~rdb_ocean_halo module~rdb_ice_transport->module~rdb_ocean_halo_state module~rdb_ice_transport->module~rdb_continuity module~rdb_ocean_bt_wide rdb_ocean_bt_wide module~rdb_ocean_bt_wide->module~rdb_barotropic_substep module~rdb_ocean_bt_wide->module~rdb_ocean_halo module~rdb_ocean_data_forcing rdb_ocean_data_forcing module~rdb_ocean_data_forcing->module~rdb_ocean_halo_state module~rdb_ocean_dyn->module~rdb_barotropic_substep module~rdb_ocean_dyn->module~rdb_ocean_console_stats module~rdb_ocean_dyn->module~rdb_ocean_halo module~rdb_ocean_dyn->module~rdb_ocean_halo_state module~rdb_ocean_dyn->module~rdb_continuity module~rdb_ocean_dyn->module~rdb_ocean_bt_wide module~rdb_ocean_engine->module~rdb_ocean_halo module~rdb_ocean_engine->module~rdb_ocean_halo_state module~rdb_ocean_engine->module~rdb_ice_evp module~rdb_ocean_engine->module~rdb_ice_ocean_coupler module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_engine->module~rdb_ocean_data_forcing module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_setup rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_diag_fills rdb_ocean_diag_fills module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_ocean_setup->module~rdb_ocean_halo module~rdb_ocean_setup->module~rdb_ocean_halo_state module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_state module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_dyn module~rdb_ocean_api->module~rdb_ocean_engine module~rdb_ocean_api->module~rdb_handle module~rdb_ocean_api->module~rdb_ocean_diag_derived module~rdb_ocean_api->module~rdb_ocean_diag_fills module~rdb_ocean_state->module~rdb_continuity module~rdb_ocean_state->module~rdb_ocean_data_forcing module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills module~rdb_ocean_diag_fills->module~rdb_ocean_state

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private, save :: oh_cnt_bt_group = 0_int64

ocean_halo_bt_group_2d grouped exchange calls

integer(kind=int64), private, save :: oh_cnt_bt_u_mid = 0_int64

Mid-substep bt_ubt face_x exchange calls (BT Pass-2b→2c u seam)

integer(kind=int64), private, save :: oh_cnt_centre_2d = 0_int64

Standalone centre_2d primitive calls

integer(kind=int64), private, save :: oh_cnt_centre_3d = 0_int64

Standalone centre_3d primitive calls

integer(kind=int64), private, save :: oh_cnt_face_x_2d = 0_int64

Standalone face_x_2d primitive calls

integer(kind=int64), private, save :: oh_cnt_face_x_3d = 0_int64

Standalone face_x_3d primitive calls

integer(kind=int64), private, save :: oh_cnt_face_y_2d = 0_int64

Standalone face_y_2d primitive calls

integer(kind=int64), private, save :: oh_cnt_face_y_3d = 0_int64

Standalone face_y_3d primitive calls

integer(kind=int64), private, save :: oh_cnt_ml_state = 0_int64

ocean_halo_exchange_ml_state whole-ML-state exchange calls

integer(kind=int64), private, save :: oh_cnt_msgs = 0_int64

Total MPI ISENDs posted by the ocean halo MPI backend. NOT subject to the suppress depth — messages are physical MPI operations regardless of semantic grouping, so suppression does not apply. Zero on single-process builds (no messages posted).

integer, private, save :: oh_suppress_depth = 0

When > 0 all oh_count_* increment calls (except oh_count_msgs) are no-ops.


Functions

public function oh_count_suppressed() result(flag)

Return .true. if suppress depth > 0 (any suppress scope is active).

Arguments

None

Return Value logical

public function oh_counters_format() result(str)

Return a one-line counter summary string.

Read more…

Arguments

None

Return Value character(len=256)

One-line summary (at most 240 chars; remainder is blank-padded).

public function oh_counters_msgs() result(n)

Return the total MPI ISEND post count. NOT included in oh_counters_total (separate physical counter).

Arguments

None

Return Value integer(kind=int64)

public function oh_counters_total() result(total)

Return the sum of all 9 semantic counters.

Arguments

None

Return Value integer(kind=int64)


Subroutines

public subroutine oh_count_bt_group()

Increment the bt_group counter. Called once in ocean_halo_bt_group_2d bodies.

Arguments

None

public subroutine oh_count_bt_u_mid()

Increment the bt_u_mid counter. Called at the mid-substep bt_ubt face_x exchange site.

Arguments

None

public subroutine oh_count_centre_2d()

Increment the centre_2d standalone counter. Called at the top of each ocean_halo_centre_2d body.

Arguments

None

public subroutine oh_count_centre_3d()

Increment the centre_3d standalone counter. Called once in ocean_halo_centre_3d (after suppressing inner 2d bumps).

Arguments

None

public subroutine oh_count_face_x_2d()

Increment the face_x_2d standalone counter. Called at the top of each ocean_halo_face_x_2d body.

Arguments

None

public subroutine oh_count_face_x_3d()

Increment the face_x_3d standalone counter. Called once in ocean_halo_face_x_3d (after suppressing inner 2d bumps).

Arguments

None

public subroutine oh_count_face_y_2d()

Increment the face_y_2d standalone counter. Called at the top of each ocean_halo_face_y_2d body.

Arguments

None

public subroutine oh_count_face_y_3d()

Increment the face_y_3d standalone counter. Called once in ocean_halo_face_y_3d (batched, no per-layer 2d loop).

Arguments

None

public subroutine oh_count_ml_state()

Increment the ml_state counter. Called once in ocean_halo_exchange_ml_state.

Arguments

None

public subroutine oh_count_msgs(n)

Increment the MPI isend post counter by n. NOT subject to the suppress depth: messages are physical MPI operations regardless of semantic grouping. Called in the MPI rdb_ocean_halo once per exchange after each set of HALO_ISEND_N calls; n is the number of ISENDs just posted.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

public subroutine oh_count_suppress_off()

Decrement suppress depth (floored at 0) after a wrapper completes.

Arguments

None

public subroutine oh_count_suppress_on()

Increment suppress depth so inner primitive increments are no-ops. Nesting-safe: each on/off pair increments/decrements a counter so nested suppress pairs (ml_state wrapping 3d wrappers) work correctly.

Arguments

None

public subroutine oh_counters_get(bt_group, bt_u_mid, ml_state, centre_2d, centre_3d, face_x_2d, face_x_3d, face_y_2d, face_y_3d)

Return all 9 semantic counters in one call.

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(out) :: bt_group

bt_group_2d call count

integer(kind=int64), intent(out) :: bt_u_mid

mid-substep bt_ubt face_x call count

integer(kind=int64), intent(out) :: ml_state

ml_state exchange call count

integer(kind=int64), intent(out) :: centre_2d

standalone centre_2d call count

integer(kind=int64), intent(out) :: centre_3d

standalone centre_3d call count

integer(kind=int64), intent(out) :: face_x_2d

standalone face_x_2d call count

integer(kind=int64), intent(out) :: face_x_3d

standalone face_x_3d call count

integer(kind=int64), intent(out) :: face_y_2d

standalone face_y_2d call count

integer(kind=int64), intent(out) :: face_y_3d

standalone face_y_3d call count

public subroutine oh_counters_reset()

Reset all 9 semantic counters and the message counter to zero. Does NOT reset the suppress flag.

Arguments

None