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

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

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


Revision 1.2 - (hide 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 cnh 1.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 cnh 1.2 & FLOAT(exchRecvXSpinCount(1,bi,bj))/
63     & FLOAT(exchRecvXExchCount(1,bi,bj))
64 cnh 1.1 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 cnh 1.2 & FLOAT(exchRecvYSpinCount(1,bi,bj))/
92     & FLOAT(exchRecvYExchCount(1,bi,bj))
93 cnh 1.1 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