utils_timing

Module

Description

This module contains utilities for code timings

References:

None

Owner:

Daniel Price

Runtime parameters:

None

Dependencies:

io, mpiutils

Quick access

Types:

timer

Variables:

finish_timer_tree_symbols, get_timer_level, init_timer, initialise_timing, istarttime, itimer_balance, itimer_cons2prim, itimer_dens, itimer_dens_local, itimer_dens_remote, itimer_ev, itimer_extf, itimer_force, itimer_force_local, itimer_force_remote, itimer_fromstart, itimer_io, itimer_lastdump, itimer_link, itimer_rad_arrays, itimer_rad_diff, itimer_rad_flux, itimer_rad_its, itimer_rad_neighlist, itimer_rad_save, itimer_rad_store, itimer_rad_update, itimer_radiation, itimer_step, ntimers, starttime, timer, timers, treelabel_len

Routines:

get_timings(), getused(), increment_timer(), log_timing(), print_time(), print_timer(), printused(), reduce_timer_mpi(), reduce_timers(), reset_timer(), setup_timers(), wallclock()

Types

  • type  timing/timer
    Type fields:
    • % cpu [real]

    • % label [character]

    • % loadbal [real]

    • % parent [integer]

    • % treelabel [character]

    • % treesymbol (5) [integer,optional/default=-1]

    • % wall [real]

Variables

  • timing/finish_timer_tree_symbols [private]
  • timing/get_timer_level [private]
  • timing/init_timer [private]
  • timing/initialise_timing [private]
  • timing/istarttime (6) [integer,private]
  • timing/itimer_balance [integer,parameter=5]
  • timing/itimer_cons2prim [integer,parameter=21]
  • timing/itimer_dens [integer,parameter=6]
  • timing/itimer_dens_local [integer,parameter=7]
  • timing/itimer_dens_remote [integer,parameter=8]
  • timing/itimer_ev [integer,parameter=23]
  • timing/itimer_extf [integer,parameter=22]
  • timing/itimer_force [integer,parameter=9]
  • timing/itimer_force_local [integer,parameter=10]
  • timing/itimer_force_remote [integer,parameter=11]
  • timing/itimer_fromstart [integer,parameter=1]
  • timing/itimer_io [integer,parameter=24]
  • timing/itimer_lastdump [integer,parameter=2]
  • timing/itimer_rad_arrays [integer,parameter=15]
  • timing/itimer_rad_diff [integer,parameter=18]
  • timing/itimer_rad_flux [integer,parameter=17]
  • timing/itimer_rad_its [integer,parameter=16]
  • timing/itimer_rad_neighlist [integer,parameter=14]
  • timing/itimer_rad_save [integer,parameter=13]
  • timing/itimer_rad_store [integer,parameter=20]
  • timing/itimer_rad_update [integer,parameter=19]
  • timing/itimer_radiation [integer,parameter=12]
  • timing/itimer_step [integer,parameter=3]
  • timing/ntimers [integer,parameter=24]

    should be equal to the largest itimer index

  • timing/starttime [real,private/optional/default=-1.0]
  • timing/timer [private]
  • timing/timers (24) [timer,public]
  • timing/treelabel_len [integer,private/parameter/optional/default=30]

Subroutines and functions

subroutine  timing/setup_timers()

These timers must be initialised with the correct tree hierarchy, i.e. children must immediately follow their parents or siblings

subroutine  timing/reset_timer(itimer)
Parameters:

itimer [integer,in]

subroutine  timing/increment_timer(itimer, wall, cpu)
Parameters:
  • itimer [integer,in]

  • wall [real,in]

  • cpu [real,in]

Called from:

do_timing()

subroutine  timing/reduce_timers()
Call to:

reduce_timer_mpi()

subroutine  timing/reduce_timer_mpi(itimer)
Parameters:

itimer [integer,in]

Use :

io (nprocs()), mpiutils (reduceall_mpi())

Called from:

reduce_timers()

subroutine  timing/print_timer(lu, itimer, time_total)
Parameters:
  • lu [integer,in]

  • itimer [integer,in]

  • time_total [real,in]

subroutine  timing/log_timing(label, twall, tcpu[, start[, iunit]])
Parameters:
  • label [character,in]

  • twall [real,in]

  • tcpu [real,in]

  • start [logical,in,]

  • iunit [integer,in,]

Called from:

do_timing()

subroutine  timing/getused(tused)
Parameters:

tused [real,out]

Called from:

printused(), get_timings(), test_setdisc()

subroutine  timing/printused(t1[, string_bn[, iunit]])
Parameters:
  • t1 [real,in]

  • string_bn [character,in,]

  • iunit [integer,in,]

Called from:

test_setdisc()

Call to:

getused(), print_time()

subroutine  timing/print_time(time[, string_bn[, iunit]])
Parameters:
  • time [real,in]

  • string_bn [character,in,]

  • iunit [integer,in,]

Called from:

printused()

subroutine  timing/get_timings(twall, tcpu)
Parameters:
  • twall [real,out]

  • tcpu [real,out]

Called from:

do_timing()

Call to:

getused()

function  timing/wallclock()

Return the wall clock time, with corrections for “across midnight” situations. From a routine originally by Aake Nordlund

Return:

wallclock [real] :: remember