rdb_profiler Module


Uses

  • module~~rdb_profiler~~UsesGraph module~rdb_profiler rdb_profiler iso_fortran_env iso_fortran_env module~rdb_profiler->iso_fortran_env pic_logger pic_logger module~rdb_profiler->pic_logger

Used by

  • module~~rdb_profiler~~UsedByGraph module~rdb_profiler rdb_profiler module~rdb_barotropic_substep rdb_barotropic_substep module~rdb_barotropic_substep->module~rdb_profiler module~rdb_continuity rdb_continuity module~rdb_continuity->module~rdb_profiler module~rdb_driver rdb_driver module~rdb_driver->module~rdb_profiler 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_ocean_bt_wide rdb_ocean_bt_wide module~rdb_ocean_bt_wide->module~rdb_profiler module~rdb_ocean_bt_wide->module~rdb_barotropic_substep module~rdb_ocean_dyn->module~rdb_profiler module~rdb_ocean_dyn->module~rdb_barotropic_substep module~rdb_ocean_dyn->module~rdb_continuity module~rdb_ocean_dyn->module~rdb_ocean_bt_wide module~rdb_ocean_halo_state rdb_ocean_halo_state module~rdb_ocean_dyn->module~rdb_ocean_halo_state module~rdb_ocean_engine->module~rdb_profiler module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_engine->module~rdb_ocean_halo_state module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ice_ocean_coupler rdb_ice_ocean_coupler module~rdb_ocean_engine->module~rdb_ice_ocean_coupler module~rdb_ice_transport rdb_ice_transport module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_data_forcing rdb_ocean_data_forcing module~rdb_ocean_engine->module~rdb_ocean_data_forcing 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 rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_halo_state->module~rdb_profiler module~rdb_ocean_state->module~rdb_profiler module~rdb_ocean_state->module~rdb_continuity module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_ocean_state->module~rdb_ocean_data_forcing module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state module~rdb_ice_transport->module~rdb_continuity module~rdb_ice_transport->module~rdb_ocean_halo_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_data_forcing->module~rdb_ocean_halo_state 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 module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_halo_state module~rdb_ocean_setup->module~rdb_ocean_state

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: MAX_NAME_LEN = 64
integer, private, parameter :: MAX_REGIONS = 256
type(profiler_state), private, save :: state

Derived Types

type, private ::  profiler_state

Components

Type Visibility Attributes Name Initial
logical, public :: enabled = .true.
logical, public :: initialized = .false.
integer, public :: num_regions = 0
type(tracked_region), public :: regions(MAX_REGIONS)

type, private ::  tracked_region

Components

Type Visibility Attributes Name Initial
logical, public :: active = .false.
integer, public :: call_count = 0
character(len=MAX_NAME_LEN), public :: name = ""
logical, public :: nvtx_only = .false.

If true, only shows in NVTX timeline, not in text report

real(kind=dp), public :: start_time = 0.0_dp
real(kind=dp), public :: total_time = 0.0_dp

Functions

public function profiler_get_time(name) result(t)

Accumulated time (s) for a named region. Public for the unit-test suite only.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name

Return Value real(kind=dp)

private function find_or_create_region(name) result(idx)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name

Return Value integer

private function get_wall_time() result(t)

Arguments

None

Return Value real(kind=dp)


Subroutines

public subroutine profiler_disable()

Public for the unit-test suite only.

Arguments

None

public subroutine profiler_enable()

Public for the unit-test suite only.

Arguments

None

public subroutine profiler_end()

Finalise the profiler

Arguments

None

public subroutine profiler_init(enabled)

Initialise the profiler

Arguments

Type IntentOptional Attributes Name
logical, intent(in), optional :: enabled

public subroutine profiler_report(title, root_region)

Print profiling report If root_region is specified, percentages are relative to that region

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in), optional :: title
character(len=*), intent(in), optional :: root_region

public subroutine profiler_reset()

Reset all timing data

Arguments

None

public subroutine profiler_start(name, nvtx_only)

Start a named profiling region If nvtx_only is true, the region only appears in NVTX timeline, not in text report

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name
logical, intent(in), optional :: nvtx_only

public subroutine profiler_stop(name)

Stop a named profiling region

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name

private subroutine nvtx_range_pop()

Arguments

None

private subroutine nvtx_range_push(name)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name