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:
- Variables:
finish_timer_tree_symbols,get_timer_level,init_timer,initialise_timing,istarttime,itimer_acc,itimer_balance,itimer_cons2prim,itimer_dens,itimer_dens_local,itimer_dens_remote,itimer_drift,itimer_ev,itimer_force,itimer_force_local,itimer_force_remote,itimer_fromstart,itimer_gasf,itimer_hii,itimer_io,itimer_kick,itimer_lastdump,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_sg_evol,itimer_sg_id,itimer_sinksink,itimer_step,itimer_substep,itimer_tree,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(),reset_timers(),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_acc [integer,parameter=25]
- 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_drift [integer,parameter=29]
- timing/itimer_ev [integer,parameter=31]
- 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_gasf [integer,parameter=24]
- timing/itimer_hii [integer,parameter=30]
- timing/itimer_io [integer,parameter=32]
- timing/itimer_kick [integer,parameter=28]
- 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_sg_evol [integer,parameter=27]
- timing/itimer_sg_id [integer,parameter=26]
- timing/itimer_sinksink [integer,parameter=23]
- timing/itimer_step [integer,parameter=3]
- timing/itimer_substep [integer,parameter=22]
- timing/itimer_tree [integer,parameter=4]
- timing/ntimers [integer,parameter=32]
should be equal to the largest itimer index
- timing/starttime [real,private/optional/default=-1.0]
- timing/timer [private]
- 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]
- Called from:
- subroutine timing/reset_timers()
- Call to:
- subroutine timing/increment_timer(itimer, wall, cpu)
- Parameters:
itimer [integer,in]
wall [real,in]
cpu [real,in]
- Called from:
- subroutine timing/reduce_timers()
- Call to:
- subroutine timing/reduce_timer_mpi(itimer)
- Parameters:
itimer [integer,in]
- Use :
io(nprocs()),mpiutils(reduceall_mpi())- Called from:
- 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:
- subroutine timing/getused(tused)
- Parameters:
tused [real,out]
- Called from:
- subroutine timing/printused(t1[, string_bn[, iunit]])
- Parameters:
t1 [real,in]
string_bn [character,in,]
iunit [integer,in,]
- Called from:
- Call to:
- subroutine timing/print_time(time[, string_bn[, iunit]])
- Parameters:
time [real,in]
string_bn [character,in,]
iunit [integer,in,]
- Called from:
- subroutine timing/get_timings(twall, tcpu)
- Parameters:
twall [real,out]
tcpu [real,out]
- Called from:
- Call to:
- 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