/[MITgcm]/MITgcm/eesupp/src/comm_stats.F
ViewVC logotype

Contents of /MITgcm/eesupp/src/comm_stats.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Wed Oct 28 03:11:33 1998 UTC (25 years, 7 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint17, checkpoint19, checkpoint18, checkpoint20, checkpoint21, checkpoint22, checkpoint23, checkpoint24, checkpoint25, checkpoint16
Changes since 1.1: +4 -2 lines
Changes to support
 - g77 compilation under Linux
 - LR(1) form of 64-bit is D or E for constants
 - Modified adjoint of exch with adjoint variables
   acuumulated.

1 #include "CPP_EEOPTIONS.h"
2
3 SUBROUTINE COMM_STATS
4 C /==========================================================\
5 C | SUBROUTINE COMM_STATS |
6 C | o Print out statistics from communication routines. |
7 C \==========================================================/
8 IMPLICIT NONE
9
10 C == Global variables ==
11 #include "SIZE.h"
12 #include "EEPARAMS.h"
13 #include "EESUPPORT.h"
14 #include "EXCH.h"
15 #include "BAR2.h"
16
17 C == Local variables ==
18 INTEGER bi, bj, I
19 CHARACTER*(MAX_LEN_MBUF) msgBuf
20 CHARACTER*8 orientation
21
22 C o For each tile print its excange statistics
23 WRITE(msgBuf,'(A)')
24 & '// ======================================================'
25 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26 & SQUEEZE_RIGHT , 1)
27 WRITE(msgBuf,'(A)') '// Tile <-> Tile communication statistics'
28 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
29 & SQUEEZE_RIGHT , 1)
30 WRITE(msgBuf,'(A)')
31 & '// ======================================================'
32 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
33 & SQUEEZE_RIGHT , 1)
34
35 IF ( exchCollectStatistics ) THEN
36 DO bj=1,nSy
37 DO bi=1,nSx
38 WRITE(msgBuf,'(A,A,I6.6)')
39 & '//',' o Tile number: ',tileNo(bi,bj)
40 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
41 & SQUEEZE_RIGHT , 1)
42 C o X exchange stats.
43 WRITE(msgBuf,'(A,A,I15)')
44 & '//',' No. X exchanges =',exchRecvXExchCount(1,bi,bj)
45 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
46 & SQUEEZE_RIGHT , 1)
47 WRITE(msgBuf,'(A,A,I15)')
48 & '//',' Max. X spins =',exchRecvXSpinMax (1,bi,bj)
49 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
50 & SQUEEZE_RIGHT , 1)
51 WRITE(msgBuf,'(A,A,I15)')
52 & '//',' Min. X spins =',exchRecvXSpinMin (1,bi,bj)
53 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
54 & SQUEEZE_RIGHT , 1)
55 WRITE(msgBuf,'(A,A,I15)')
56 & '//',' Total. X spins =',exchRecvXSpinCount(1,bi,bj)
57 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
58 & SQUEEZE_RIGHT , 1)
59 IF ( FLOAT(exchRecvXExchCount(1,bi,bj)) .NE. 0. ) THEN
60 WRITE(msgBuf,'(A,A,1PE15.2)')
61 & '//',' Avg. X spins =',
62 & FLOAT(exchRecvXSpinCount(1,bi,bj))/
63 & FLOAT(exchRecvXExchCount(1,bi,bj))
64 ELSE
65 WRITE(msgBuf,'(A,A,1PE15.2)')
66 & '//',' Avg. X spins =',
67 & 0.
68 ENDIF
69 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
70 & SQUEEZE_RIGHT , 1)
71 C o Y exchange stats.
72 WRITE(msgBuf,'(A,A,I15)')
73 & '//',' No. Y exchanges =',exchRecvYExchCount(1,bi,bj)
74 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
75 & SQUEEZE_RIGHT , 1)
76 WRITE(msgBuf,'(A,A,I15)')
77 & '//',' Max. Y spins =',exchRecvYSpinMax (1,bi,bj)
78 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
79 & SQUEEZE_RIGHT , 1)
80 WRITE(msgBuf,'(A,A,I15)')
81 & '//',' Min. Y spins =',exchRecvYSpinMin (1,bi,bj)
82 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
83 & SQUEEZE_RIGHT , 1)
84 WRITE(msgBuf,'(A,A,I15)')
85 & '//',' Total. Y spins =',exchRecvYSpinCount(1,bi,bj)
86 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
87 & SQUEEZE_RIGHT , 1)
88 IF ( FLOAT(exchRecvYExchCount(1,bi,bj)) .NE. 0. ) THEN
89 WRITE(msgBuf,'(A,A,1PE15.2)')
90 & '//',' Avg. Y spins =',
91 & FLOAT(exchRecvYSpinCount(1,bi,bj))/
92 & FLOAT(exchRecvYExchCount(1,bi,bj))
93 ELSE
94 WRITE(msgBuf,'(A,A,1PE15.2)')
95 & '//',' Avg. Y spins =',
96 & 0.
97 ENDIF
98 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
99 & SQUEEZE_RIGHT , 1)
100
101 ENDDO
102 ENDDO
103 ENDIF
104
105 IF ( bar2CollectStatistics ) THEN
106 DO I=1,nThreads
107 WRITE(msgBuf,'(A,A,I6.6)')
108 & '//',' o Thread number: ',I
109 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
110 & SQUEEZE_RIGHT , 1)
111 WRITE(msgBuf,'(A,A,I15)')
112 & '//',' No. barriers =',BAR2_barrierCount(1,I)
113 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
114 & SQUEEZE_RIGHT , 1)
115 WRITE(msgBuf,'(A,A,I15)')
116 & '//',' Max. barrier spins =',BAR2_spinsMax(1,I)
117 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
118 & SQUEEZE_RIGHT , 1)
119 WRITE(msgBuf,'(A,A,I15)')
120 & '//',' Min. barrier spins =',BAR2_spinsMin(1,I)
121 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
122 & SQUEEZE_RIGHT , 1)
123 WRITE(msgBuf,'(A,A,I15)')
124 & '//',' Total barrier spins =',BAR2_spinsCount(1,I)
125 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
126 & SQUEEZE_RIGHT , 1)
127 IF ( FLOAT(BAR2_spinsCount(1,I)) .NE. 0. ) THEN
128 WRITE(msgBuf,'(A,A,1PE15.2)')
129 & '//',' Avg. barrier spins =',
130 & FLOAT(BAR2_spinsCount(1,I))/FLOAT(BAR2_barrierCount(1,I))
131 ELSE
132 WRITE(msgBuf,'(A,A,1PE15.2)')
133 & '//',' Avg. barrier spins =',
134 & 0.
135 ENDIF
136 CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
137 & SQUEEZE_RIGHT , 1)
138 ENDDO
139 ENDIF
140
141 C
142 RETURN
143 END
144

  ViewVC Help
Powered by ViewVC 1.1.22