1 !-----------------------------------------------------------------------
2 SUBROUTINE INSTRUMENT
(K
,KALL
,TTOT
,TMIN
,TMAX
)
3 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
5 ! SUBPROGRAM
: INSTRUMENT MONITOR WALL
-CLOCK TIMES
, ETC
.
6 ! PRGMMR
: IREDELL ORG
: NP23
DATE:1998-07-16
8 ! ABSTRACT
: THIS SUBPROGRAM IS USEFUL IN INSTRUMENTING A CODE
9 ! BY MONITORING THE NUMBER OF TIMES EACH GIVEN SECTION
10 ! OF A
PROGRAM IS INVOKED AS WELL AS THE MINIMUM
, MAXIMUM
11 ! AND TOTAL WALL
-CLOCK TIME SPENT IN THE GIVEN SECTION
.
13 ! PROGRAM HISTORY LOG
:
16 ! USAGE
: CALL INSTRUMENT
(K
,KALL
,TTOT
,TMIN
,TMAX
)
17 ! INPUT ARGUMENT LIST
:
18 ! K
- INTEGER POSITIVE SECTION NUMBER
19 ! OR MAXIMUM SECTION NUMBER IN THE FIRST INVOCATION
20 ! OR ZERO
TO RESET ALL WALL
-CLOCK STATISTICS
21 ! OR NEGATIVE SECTION NUMBER
TO SKIP MONITORING
22 ! AND JUST
RETURN STATISTICS
.
24 ! OUTPUT ARGUMENT LIST
:
25 ! KALL
- INTEGER NUMBER OF TIMES SECTION IS CALLED
26 ! TTOT
- REAL TOTAL SECONDS SPENT IN SECTION
27 ! TMIN
- REAL MINIMUM SECONDS SPENT IN SECTION
28 ! TMAX
- REAL MAXIMUM SECONDS SPENT IN SECTION
31 ! W3UTCDAT
RETURN THE UTC
DATE AND TIME
32 ! W3DIFDAT
RETURN A TIME INTERVAL BETWEEN TWO DATES
35 ! THIS SUBPROGRAM SHOULD NOT BE INVOKED FROM A MULTITASKING REGION
.
36 ! NORMALLY
, TIME SPENT INSIDE THIS SUBPROGRAM IS NOT COUNTED
.
37 ! WALL
-CLOCK TIMES ARE KEPT
TO THE NEAREST MILLISECOND
.
40 ! CALL INSTRUMENT
(2,KALL
,TTOT
,TMIN
,TMAX
) ! KEEP STATS
FOR 2 SUBS
43 ! CALL INSTRUMENT
(1,KALL
,TTOT
,TMIN
,TMAX
) ! ACCUM STATS
FOR SUB1
45 ! CALL INSTRUMENT
(2,KALL
,TTOT
,TMIN
,TMAX
) ! ACCUM STATS
FOR SUB2
47 ! PRINT
*,'SUB2 STATS: ',KALL
,TTOT
,TMIN
,TMAX
48 ! CALL INSTRUMENT
(-1,KALL
,TTOT
,TMIN
,TMAX
) ! RETURN STATS
FOR SUB1
49 ! PRINT
*,'SUB1 STATS: ',KALL
,TTOT
,TMIN
,TMAX
52 ! LANGUAGE
: FORTRAN
90
56 INTEGER,INTENT
(IN
):: K
57 INTEGER,INTENT
(OUT
):: KALL
58 REAL,INTENT
(OUT
):: TTOT
,TMIN
,TMAX
60 INTEGER,DIMENSION(:),ALLOCATABLE
,SAVE
:: KALLS
61 REAL,DIMENSION(:),ALLOCATABLE
,SAVE
:: TTOTS
,TMINS
,TMAXS
62 INTEGER,DIMENSION(8),SAVE
:: IDAT
63 INTEGER,DIMENSION(8):: JDAT
64 REAL,DIMENSION(5):: RINC
66 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
68 ! ALLOCATE MONITORING ARRAYS
IF INITIAL INVOCATION
77 ! OR RESET ALL STATISTICS BACK
TO ZERO
80 ! OR COUNT TIME SINCE LAST INVOCATION AGAINST THIS SECTION
83 CALL W3DIFDAT
(JDAT
,IDAT
,4,RINC
)
85 IF(KALLS
(K
).EQ
.1) THEN
90 TTOTS
(K
)=TTOTS
(K
)+RINC
(4)
91 TMINS
(K
)=MIN
(TMINS
(K
),RINC
(4))
92 TMAXS
(K
)=MAX
(TMAXS
(K
),RINC
(4))
95 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
97 IF(KA
.GE
.1.AND
.KA
.LE
.KMAX
.AND
.KALLS
(KA
).GT
.0) THEN
108 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
109 ! KEEP CURRENT TIME
FOR NEXT INVOCATION
110 IF(K
.GE
.0) CALL W3UTCDAT
(IDAT
)
111 END SUBROUTINE INSTRUMENT