SURFEX v8.1
General documentation of Surfex
yomgstats.F90
Go to the documentation of this file.
1 MODULE yomgstats
2 
3 USE parkind1 ,ONLY : jprd, jpim, jprb
4 
5 IMPLICIT NONE
6 
7 SAVE
8 
9 ! ------------------------------------------------------------------
10 ! Module for timing statistics. Module is internal to the GSTATS package -
11 ! routines GSTATS, SUSTATS and STATS_OUTPUT. The logical switches are
12 ! re-initialized in SUMPINI
13 
14 ! LSTATS - TRUE for gathering timing statistics
15 ! LSTATSCPU - TRUE for gathering CPU timing statistics
16 ! LSYNCSTATS - TRUE for syncronization (call to barrier) at the
17 ! start of timing event
18 ! LDETAILED_STATS - TRUE for more detail in output
19 ! LXML_STATS - TRUE for stats output in XML
20 ! LSTATS_OMP - TRUE for gathering timing statistics on OpenMP regions
21 ! 1001-1999
22 ! LSTATS_COMMS - TRUE for gathering detailed timing of Message passing
23 ! 501-1000
24 ! LSTATS_MPL - TRUE for gathering detailed info on message passing
25 ! NTRACE_STATS - max number of entries in trace
26 ! LTRACE_STATS - True for trace of all calls to gstats
27 ! LGSTATS_LABEL - True after GSTATS-labels have been set
28 ! JPMAXSTAT - max number of separate timers in gstats
29 ! JPOBCOUNT_BASE - first counter for obs types
30 ! NCALLS - number of times a timer has been switched on
31 ! TIMESUM - total time spent with timer on
32 ! TIMESQSUM - sum of the squares of times
33 ! TIMEMAX - max time of all calls
34 ! TIMESUMB - sum of times between previous timer was invoked and this
35 ! timer was switched on ( to be used for finding out which parts
36 ! of the code that is not being timed)
37 ! TIMELCALL - time when event was switched on or resumed
38 ! TTCPUSUM - total cpu time
39 ! TVCPUSUM - total vector cpu time
40 ! THISTIME - total accumulated time for this call to timing event (necessary
41 ! to be able to suspend and resume timer and still have it counted
42 ! as one timing event)
43 ! THISTCPU - as THISTIME but for CPU time
44 ! THISVCPU - as THISTIME but for vector CPU time
45 ! TTCPULCALL - as TIMELCALL but for CPU time
46 ! TVCPULCALL - as TIMELCALL but for vector CPU time
47 ! TIME_LAST_CALL - last time GSTATS was called
48 ! TIME_START - used for recording parallel startup time
49 !
50 ! NSWITCHVAL - for detecting overlapping counters
51 
52 
53 LOGICAL :: lstats = .true.
54 LOGICAL :: lstats_omp = .false.
55 LOGICAL :: lstats_comms = .false.
56 LOGICAL :: lstats_mpl = .false.
57 LOGICAL :: lstats_mem = .false.
58 LOGICAL :: lstats_alloc = .false.
59 LOGICAL :: lstatscpu = .true.
60 LOGICAL :: lsyncstats = .false.
61 LOGICAL :: lxml_stats = .false.
62 LOGICAL :: ldetailed_stats = .true.
63 LOGICAL :: lbarrier_stats = .false.
64 LOGICAL :: lbarrier_stats2 = .false.
65 LOGICAL :: ltrace_stats = .false.
66 LOGICAL :: lgstats_label = .false.
67 
68 INTEGER(KIND=JPIM),PARAMETER :: jbmaxbase=2500
69 INTEGER(KIND=JPIM),PARAMETER :: jpmaxbars=500
70 INTEGER(KIND=JPIM),PARAMETER :: jpmaxstat=jbmaxbase+jpmaxbars
71 
72 INTEGER(KIND=JPIM),PARAMETER :: jpobcount_base=201
73 INTEGER(KIND=JPIM) :: ntrace_stats=0
74 INTEGER(KIND=JPIM) :: ncalls(0:jpmaxstat)
75 INTEGER(KIND=JPIM) :: nswitchval(0:jpmaxstat)
76 INTEGER(KIND=JPIM) :: ncalls_total=0
77 INTEGER(KIND=JPIM) :: last_kswitch=0
78 INTEGER(KIND=JPIM) :: last_knum=0
79 INTEGER(KIND=JPIM) :: nhook_messages=0
80 INTEGER(KIND=JPIM) :: nbar_ptr(0:jpmaxstat)=0
81 INTEGER(KIND=JPIM) :: nbar2=jbmaxbase+1
82 INTEGER(KIND=JPIM),ALLOCATABLE :: ncall_trace(:)
83 INTEGER(KIND=JPIM),ALLOCATABLE :: numsend(:)
84 INTEGER(KIND=JPIM),ALLOCATABLE :: numrecv(:)
85 REAL(KIND=JPRB),ALLOCATABLE :: sendbytes(:)
86 REAL(KIND=JPRB),ALLOCATABLE :: recvbytes(:)
87 INTEGER(KIND=JPIM),ALLOCATABLE :: unknown_numsend(:)
88 INTEGER(KIND=JPIM),ALLOCATABLE :: unknown_numrecv(:)
89 REAL(KIND=JPRB),ALLOCATABLE :: unknown_sendbytes(:)
90 REAL(KIND=JPRB),ALLOCATABLE :: unknown_recvbytes(:)
91 
92 REAL(KIND=JPRD) :: timesum(0:jpmaxstat)
93 REAL(KIND=JPRD) :: timesqsum(0:jpmaxstat)
94 REAL(KIND=JPRD) :: timemax(0:jpmaxstat)
95 REAL(KIND=JPRD) :: timesumb(0:jpmaxstat)
96 REAL(KIND=JPRD) :: timelcall(0:jpmaxstat)
97 REAL(KIND=JPRD) :: ttcpusum(0:jpmaxstat)
98 REAL(KIND=JPRD) :: tvcpusum(0:jpmaxstat)
99 REAL(KIND=JPRD) :: thistime(0:jpmaxstat)
100 REAL(KIND=JPRD) :: thistcpu(0:jpmaxstat)
101 REAL(KIND=JPRD) :: thisvcpu(0:jpmaxstat)
102 REAL(KIND=JPRD) :: ttcpulcall(0:jpmaxstat)
103 REAL(KIND=JPRD) :: tvcpulcall(0:jpmaxstat)
104 REAL(KIND=JPRD) :: time_last_call
105 
106 REAL(KIND=JPRD),ALLOCATABLE :: time_start(:)
107 REAL(KIND=JPRD),ALLOCATABLE :: time_trace(:)
108 INTEGER(KIND=JPIM),PARAMETER :: jperr=0
109 INTEGER(KIND=JPIM),PARAMETER :: jptagstat=20555
110 
111 INTEGER(KIND=JPIM),PARAMETER :: jpmaxdelays=1000
112 INTEGER(KIND=JPIM) :: ndelay_counter(1:jpmaxdelays)
113 REAL(KIND=JPRD) :: tdelay_value(1:jpmaxdelays)
114 CHARACTER*10 :: cdelay_time(1:jpmaxdelays)
115 INTEGER(KIND=JPIM) :: ndelay_index = 0
116 
117 CHARACTER*50 :: ccdesc(0:jpmaxstat) = ""
118 CHARACTER*3 :: cctype(0:jpmaxstat) = ""
119 
120 INTEGER(KIND=JPIM) :: nproc_stats = 1
121 INTEGER(KIND=JPIM) :: myproc_stats = 1
122 INTEGER(KIND=JPIM),ALLOCATABLE :: nprcids_stats(:)
123 
124 INTEGER(KIND=JPIM) :: ntmem(0:jpmaxstat,5)
125 INTEGER(KIND=JPIM) :: nstats_mem=0
126 
127 INTEGER(KIND=JPIM) :: nprnt_stats=3
128 
129 END MODULE yomgstats
130 
131 
132 
133 
real(kind=jprb), dimension(:), allocatable unknown_recvbytes
Definition: yomgstats.F90:90
integer(kind=jpim), dimension(0:jpmaxstat, 5) ntmem
Definition: yomgstats.F90:124
integer(kind=jpim) myproc_stats
Definition: yomgstats.F90:121
real(kind=jprd), dimension(:), allocatable time_trace
Definition: yomgstats.F90:107
real(kind=jprd), dimension(1:jpmaxdelays) tdelay_value
Definition: yomgstats.F90:113
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), parameter jptagstat
Definition: yomgstats.F90:109
integer, parameter jprd
Definition: parkind1.F90:39
character *10, dimension(1:jpmaxdelays) cdelay_time
Definition: yomgstats.F90:114
integer(kind=jpim), parameter jbmaxbase
Definition: yomgstats.F90:68
real(kind=jprd), dimension(0:jpmaxstat) tvcpusum
Definition: yomgstats.F90:98
integer(kind=jpim), dimension(:), allocatable numrecv
Definition: yomgstats.F90:84
real(kind=jprb), dimension(:), allocatable sendbytes
Definition: yomgstats.F90:85
real(kind=jprd), dimension(0:jpmaxstat) timelcall
Definition: yomgstats.F90:96
integer(kind=jpim) nproc_stats
Definition: yomgstats.F90:120
integer(kind=jpim) nstats_mem
Definition: yomgstats.F90:125
integer(kind=jpim), dimension(1:jpmaxdelays) ndelay_counter
Definition: yomgstats.F90:112
integer(kind=jpim), dimension(:), allocatable unknown_numrecv
Definition: yomgstats.F90:88
real(kind=jprd), dimension(0:jpmaxstat) ttcpulcall
Definition: yomgstats.F90:102
real(kind=jprd), dimension(0:jpmaxstat) thistime
Definition: yomgstats.F90:99
integer(kind=jpim), parameter jpmaxbars
Definition: yomgstats.F90:69
integer(kind=jpim), dimension(0:jpmaxstat) nbar_ptr
Definition: yomgstats.F90:80
integer(kind=jpim), parameter jpmaxstat
Definition: yomgstats.F90:70
logical lxml_stats
Definition: yomgstats.F90:61
real(kind=jprd), dimension(0:jpmaxstat) thisvcpu
Definition: yomgstats.F90:101
integer(kind=jpim) ntrace_stats
Definition: yomgstats.F90:73
integer(kind=jpim), dimension(:), allocatable ncall_trace
Definition: yomgstats.F90:82
logical lstats_alloc
Definition: yomgstats.F90:58
logical lbarrier_stats2
Definition: yomgstats.F90:64
integer, parameter jprb
Definition: parkind1.F90:32
real(kind=jprd) time_last_call
Definition: yomgstats.F90:104
logical ltrace_stats
Definition: yomgstats.F90:65
integer(kind=jpim) last_knum
Definition: yomgstats.F90:78
real(kind=jprb), dimension(:), allocatable unknown_sendbytes
Definition: yomgstats.F90:89
integer(kind=jpim) nbar2
Definition: yomgstats.F90:81
character *3, dimension(0:jpmaxstat) cctype
Definition: yomgstats.F90:118
logical lsyncstats
Definition: yomgstats.F90:60
logical lstatscpu
Definition: yomgstats.F90:59
character *50, dimension(0:jpmaxstat) ccdesc
Definition: yomgstats.F90:117
logical lstats_mpl
Definition: yomgstats.F90:56
integer(kind=jpim), dimension(:), allocatable nprcids_stats
Definition: yomgstats.F90:122
integer(kind=jpim) ndelay_index
Definition: yomgstats.F90:115
integer(kind=jpim) nhook_messages
Definition: yomgstats.F90:79
integer(kind=jpim), parameter jperr
Definition: yomgstats.F90:108
integer(kind=jpim) nprnt_stats
Definition: yomgstats.F90:127
logical lstats_comms
Definition: yomgstats.F90:55
real(kind=jprd), dimension(0:jpmaxstat) timesumb
Definition: yomgstats.F90:95
real(kind=jprd), dimension(0:jpmaxstat) tvcpulcall
Definition: yomgstats.F90:103
real(kind=jprd), dimension(0:jpmaxstat) ttcpusum
Definition: yomgstats.F90:97
integer(kind=jpim), dimension(:), allocatable unknown_numsend
Definition: yomgstats.F90:87
integer(kind=jpim) ncalls_total
Definition: yomgstats.F90:76
real(kind=jprb), dimension(:), allocatable recvbytes
Definition: yomgstats.F90:86
real(kind=jprd), dimension(0:jpmaxstat) timemax
Definition: yomgstats.F90:94
integer(kind=jpim) last_kswitch
Definition: yomgstats.F90:77
logical lbarrier_stats
Definition: yomgstats.F90:63
integer(kind=jpim), dimension(0:jpmaxstat) nswitchval
Definition: yomgstats.F90:75
logical lgstats_label
Definition: yomgstats.F90:66
logical ldetailed_stats
Definition: yomgstats.F90:62
integer(kind=jpim), dimension(0:jpmaxstat) ncalls
Definition: yomgstats.F90:74
logical lstats_omp
Definition: yomgstats.F90:54
real(kind=jprd), dimension(0:jpmaxstat) timesum
Definition: yomgstats.F90:92
integer(kind=jpim), parameter jpmaxdelays
Definition: yomgstats.F90:111
real(kind=jprd), dimension(0:jpmaxstat) timesqsum
Definition: yomgstats.F90:93
logical lstats
Definition: yomgstats.F90:53
real(kind=jprd), dimension(:), allocatable time_start
Definition: yomgstats.F90:106
logical lstats_mem
Definition: yomgstats.F90:57
integer(kind=jpim), dimension(:), allocatable numsend
Definition: yomgstats.F90:83
integer(kind=jpim), parameter jpobcount_base
Definition: yomgstats.F90:72
real(kind=jprd), dimension(0:jpmaxstat) thistcpu
Definition: yomgstats.F90:100