MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
Loading...
Searching...
No Matches
mod_timing.t
Go to the documentation of this file.
2! module file for counters of wallclock time.
3! 14.05.2012 Oliver Porth
4! to use the timers, just
5! use mod_timing
6 use mpi, only: mpi_wtime
7 !$ use omp_lib, only: omp_in_parallel
8 implicit none
9 save
10 double precision :: time_in, timeio0, timeio_tot=0.0d0
11 double precision :: timegr0, timegr_tot=0.0d0, timeloop, timeloop0
12 double precision :: timeeos_update=0.0d0
13 double precision :: timeeos_csound=0.0d0
14 double precision :: timeeos_conv=0.0d0
15 double precision :: timeeos_pthermal=0.0d0
16 double precision :: timeeos_tfromei=0.0d0
17 double precision :: time_wb_transform=0.0d0, time_wb_inverse=0.0d0
18 double precision :: time_wb_recon=0.0d0
19 double precision :: time_rt=0.0d0, time_sts=0.0d0
20 double precision :: tpartc=0.0d0, tpartc_io=0.0d0, tpartc_int=0.0d0, tpartc_com=0.0d0, tpartc_grid=0.0d0
22 double precision :: timelast
23 double precision :: tw_advance=0.0d0, tw_setdt=0.0d0
24 double precision :: tw_regrid=0.0d0, tw_save=0.0d0
25 double precision :: tw_process=0.0d0, tw_sts=0.0d0
26 double precision :: tw_sts_prev=0.0d0, tw_tmp=0.0d0
27 double precision :: tw_eos_hydro=0.0d0, tw_eos_hydro_prev=0.0d0
28 double precision :: tw_eos_tc=0.0d0, tw_eos_tc_prev=0.0d0
29 integer :: ittimelast
30 integer, parameter :: timing_unit=55
31 logical :: timing_log_opened=.false.
32 !> Enable writing of detailed timing breakdown log (set via savelist)
33 logical :: write_timing_log=.false.
34 !> Write timing log every N iterations (default 10)
35 integer :: timing_log_interval=10
36 !> nesting depth of the EoS timers: only the outermost call accumulates, so an EoS call
37 !> made inside another is counted once, under the category of the outer one
38 integer, private :: eos_depth=0
39 double precision, private :: eos_t0
40
41contains
42
43 !> Open an EoS timing window; inside an OpenMP parallel region the EoS is not timed
44 subroutine eos_timer_start()
45 !$ if(omp_in_parallel()) return
46 if(eos_depth==0) eos_t0=mpi_wtime()
47 eos_depth=eos_depth+1
48 end subroutine eos_timer_start
49
50 !> Close an EoS timing window, adding its time to acc when it is the outermost
51 subroutine eos_timer_stop(acc)
52 double precision, intent(inout) :: acc
53 !$ if(omp_in_parallel()) return
54 eos_depth=eos_depth-1
55 if(eos_depth==0) acc=acc+(mpi_wtime()-eos_t0)
56 end subroutine eos_timer_stop
57
58 !> All EoS time so far; windows that enclose EoS calls subtract its change
61 end function time_eos
62
63 !> Open a timing window, whose length leaves out the EoS and ghost-cell time spent inside it,
64 !> since those are counted under their own categories
65 subroutine timer_open(t0)
67 double precision, intent(out) :: t0(3)
68 t0 = [mpi_wtime(), time_eos(), time_bc]
69 end subroutine timer_open
70
71 !> Wall time since timer_open, less the EoS and ghost-cell time spent in between
72 double precision function timer_close(t0)
74 double precision, intent(in) :: t0(3)
75 timer_close = (mpi_wtime()-t0(1)) - (time_eos()-t0(2)) - (time_bc-t0(3))
76 end function timer_close
77
78 !> Zero the category timers of the time loop, so that the summary covers the loop only
85 end subroutine timers_reset
86
87end module mod_timing
This module contains definitions of global parameters and variables and some generic functions/subrou...
double precision time_bc
accumulated wall-clock time spent on boundary conditions
double precision tw_eos_hydro_prev
Definition mod_timing.t:27
double precision tw_sts_prev
Definition mod_timing.t:26
double precision time_wb_inverse
Definition mod_timing.t:17
double precision tw_process
Definition mod_timing.t:25
double precision tw_advance
Definition mod_timing.t:23
double precision tw_regrid
Definition mod_timing.t:24
integer timing_log_interval
Write timing log every N iterations (default 10).
Definition mod_timing.t:35
double precision tpartc_int_0
Definition mod_timing.t:21
integer ittimelast
Definition mod_timing.t:29
double precision time_sts
Definition mod_timing.t:19
double precision timegr_tot
Definition mod_timing.t:11
double precision tw_save
Definition mod_timing.t:24
double precision timeio_tot
Definition mod_timing.t:10
double precision time_in
Definition mod_timing.t:10
double precision tw_eos_tc
Definition mod_timing.t:28
subroutine eos_timer_start()
Open an EoS timing window; inside an OpenMP parallel region the EoS is not timed.
Definition mod_timing.t:45
double precision tw_eos_hydro
Definition mod_timing.t:27
double precision tw_tmp
Definition mod_timing.t:26
double precision tw_sts
Definition mod_timing.t:25
double precision tpartc_com
Definition mod_timing.t:20
double precision time_wb_recon
Definition mod_timing.t:18
double precision time_rt
Definition mod_timing.t:19
double precision timelast
Definition mod_timing.t:22
double precision timeeos_update
Definition mod_timing.t:12
double precision tpartc
Definition mod_timing.t:20
integer, parameter timing_unit
Definition mod_timing.t:30
subroutine timers_reset()
Zero the category timers of the time loop, so that the summary covers the loop only.
Definition mod_timing.t:80
double precision tw_setdt
Definition mod_timing.t:23
logical write_timing_log
Enable writing of detailed timing breakdown log (set via savelist).
Definition mod_timing.t:33
double precision tpartc0
Definition mod_timing.t:21
double precision tpartc_grid_0
Definition mod_timing.t:21
double precision timeeos_pthermal
Definition mod_timing.t:15
subroutine timer_open(t0)
Open a timing window, whose length leaves out the EoS and ghost-cell time spent inside it,...
Definition mod_timing.t:66
double precision timeio0
Definition mod_timing.t:10
double precision tpartc_io
Definition mod_timing.t:20
double precision timeloop
Definition mod_timing.t:11
double precision timeloop0
Definition mod_timing.t:11
double precision tpartc_com0
Definition mod_timing.t:21
double precision function time_eos()
All EoS time so far; windows that enclose EoS calls subtract its change.
Definition mod_timing.t:60
double precision timeeos_conv
Definition mod_timing.t:14
double precision tpartc_grid
Definition mod_timing.t:20
double precision tpartc_io_0
Definition mod_timing.t:21
subroutine eos_timer_stop(acc)
Close an EoS timing window, adding its time to acc when it is the outermost.
Definition mod_timing.t:52
double precision tpartc_int
Definition mod_timing.t:20
double precision time_wb_transform
Definition mod_timing.t:17
double precision function timer_close(t0)
Wall time since timer_open, less the EoS and ghost-cell time spent in between.
Definition mod_timing.t:73
double precision timeeos_csound
Definition mod_timing.t:13
double precision tw_eos_tc_prev
Definition mod_timing.t:28
logical timing_log_opened
Definition mod_timing.t:31
double precision timeeos_tfromei
Definition mod_timing.t:16
double precision timegr0
Definition mod_timing.t:11