Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:36:07 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
048ce7bdb7 Chri*0001 #include "CPP_EEOPTIONS.h"
                0002 
4c563c2ee9 Chri*0003 CBOP
                0004 C     !ROUTINE: COMM_STATS
                0005 
                0006 C     !INTERFACE:
048ce7bdb7 Chri*0007       SUBROUTINE COMM_STATS
                0008       IMPLICIT NONE
                0009 
4c563c2ee9 Chri*0010 C     !DESCRIPTION:
                0011 C     *==========================================================
2b4c849245 Ed H*0012 C     | SUBROUTINE COMM\_STATS                                    
4c563c2ee9 Chri*0013 C     | o Print out statistics from communication routines.      
                0014 C     *==========================================================
                0015 
                0016 C     !USES:
048ce7bdb7 Chri*0017 C     == Global variables ==
                0018 #include "SIZE.h"
                0019 #include "EEPARAMS.h"
                0020 #include "EESUPPORT.h"
                0021 #include "EXCH.h"
                0022 #include "BAR2.h"
                0023 
4c563c2ee9 Chri*0024 C     !LOCAL VARIABLES:
048ce7bdb7 Chri*0025 C     == Local variables ==
4c563c2ee9 Chri*0026 C     bi, bj, I :: Loop counters
                0027 C     msgBuf    :: Temp. for building text messages.
048ce7bdb7 Chri*0028       INTEGER bi, bj, I
                0029       CHARACTER*(MAX_LEN_MBUF) msgBuf
4c563c2ee9 Chri*0030 CEOP
048ce7bdb7 Chri*0031     
                0032 C      o For each tile print its excange statistics
                0033        WRITE(msgBuf,'(A)')
                0034      & '// ======================================================'
                0035        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0036      &   SQUEEZE_RIGHT , 1)
                0037        WRITE(msgBuf,'(A)') '// Tile <-> Tile communication statistics'
                0038        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0039      &   SQUEEZE_RIGHT , 1)
                0040        WRITE(msgBuf,'(A)')
                0041      & '// ======================================================'
                0042        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0043      &   SQUEEZE_RIGHT , 1)
                0044       
                0045       IF ( exchCollectStatistics ) THEN
                0046        DO bj=1,nSy
                0047         DO bi=1,nSx
                0048          WRITE(msgBuf,'(A,A,I6.6)')
                0049      &    '//',' o Tile number: ',tileNo(bi,bj)
                0050          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0051      &                      SQUEEZE_RIGHT , 1)
                0052 C        o X exchange stats.
                0053          WRITE(msgBuf,'(A,A,I15)')
                0054      &    '//','         No. X exchanges =',exchRecvXExchCount(1,bi,bj)
                0055          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0056      &                     SQUEEZE_RIGHT , 1)
                0057          WRITE(msgBuf,'(A,A,I15)')
                0058      &    '//','            Max. X spins =',exchRecvXSpinMax  (1,bi,bj)
                0059          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0060      &                     SQUEEZE_RIGHT , 1)
                0061          WRITE(msgBuf,'(A,A,I15)')
                0062      &    '//','            Min. X spins =',exchRecvXSpinMin  (1,bi,bj)
                0063          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0064      &                     SQUEEZE_RIGHT , 1)
                0065          WRITE(msgBuf,'(A,A,I15)')
                0066      &    '//','          Total. X spins =',exchRecvXSpinCount(1,bi,bj)
                0067          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0068      &                     SQUEEZE_RIGHT , 1)
                0069          IF ( FLOAT(exchRecvXExchCount(1,bi,bj)) .NE. 0. ) THEN
                0070           WRITE(msgBuf,'(A,A,1PE15.2)')
                0071      &    '//','            Avg. X spins =',
46dc4f419b Chri*0072      &    FLOAT(exchRecvXSpinCount(1,bi,bj))/
                0073      &    FLOAT(exchRecvXExchCount(1,bi,bj))
048ce7bdb7 Chri*0074          ELSE
                0075           WRITE(msgBuf,'(A,A,1PE15.2)')
                0076      &    '//','            Avg. X spins =',
                0077      &    0.
                0078          ENDIF
                0079          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0080      &                     SQUEEZE_RIGHT , 1)
                0081 C        o Y exchange stats.
                0082          WRITE(msgBuf,'(A,A,I15)')
                0083      &    '//','         No. Y exchanges =',exchRecvYExchCount(1,bi,bj)
                0084          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0085      &                     SQUEEZE_RIGHT , 1)
                0086          WRITE(msgBuf,'(A,A,I15)')
                0087      &    '//','            Max. Y spins =',exchRecvYSpinMax  (1,bi,bj)
                0088          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0089      &                     SQUEEZE_RIGHT , 1)
                0090          WRITE(msgBuf,'(A,A,I15)')
                0091      &    '//','            Min. Y spins =',exchRecvYSpinMin  (1,bi,bj)
                0092          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0093      &                     SQUEEZE_RIGHT , 1)
                0094          WRITE(msgBuf,'(A,A,I15)')
                0095      &    '//','          Total. Y spins =',exchRecvYSpinCount(1,bi,bj)
                0096          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0097      &                     SQUEEZE_RIGHT , 1)
                0098          IF ( FLOAT(exchRecvYExchCount(1,bi,bj)) .NE. 0. ) THEN
                0099           WRITE(msgBuf,'(A,A,1PE15.2)')
                0100      &    '//','            Avg. Y spins =',
46dc4f419b Chri*0101      &    FLOAT(exchRecvYSpinCount(1,bi,bj))/
                0102      &    FLOAT(exchRecvYExchCount(1,bi,bj))
048ce7bdb7 Chri*0103          ELSE
                0104           WRITE(msgBuf,'(A,A,1PE15.2)')
                0105      &    '//','            Avg. Y spins =',
                0106      &    0.
                0107          ENDIF
                0108          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0109      &                     SQUEEZE_RIGHT , 1)
                0110        
                0111         ENDDO
                0112        ENDDO
                0113       ENDIF
                0114  
                0115       IF ( bar2CollectStatistics ) THEN
                0116        DO I=1,nThreads
                0117          WRITE(msgBuf,'(A,A,I6.6)')
                0118      &    '//',' o Thread number: ',I
                0119          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0120      &                      SQUEEZE_RIGHT , 1)
                0121          WRITE(msgBuf,'(A,A,I15)')
                0122      &    '//','            No. barriers =',BAR2_barrierCount(1,I)
                0123          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0124      &                     SQUEEZE_RIGHT , 1)
                0125          WRITE(msgBuf,'(A,A,I15)')
                0126      &    '//','      Max. barrier spins =',BAR2_spinsMax(1,I)
                0127          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0128      &                     SQUEEZE_RIGHT , 1)
                0129          WRITE(msgBuf,'(A,A,I15)')
                0130      &    '//','      Min. barrier spins =',BAR2_spinsMin(1,I)
                0131          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0132      &                     SQUEEZE_RIGHT , 1)
                0133          WRITE(msgBuf,'(A,A,I15)')
                0134      &    '//','     Total barrier spins =',BAR2_spinsCount(1,I)
                0135          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0136      &                     SQUEEZE_RIGHT , 1)
                0137          IF ( FLOAT(BAR2_spinsCount(1,I)) .NE. 0. ) THEN
                0138           WRITE(msgBuf,'(A,A,1PE15.2)')
                0139      &    '//','      Avg. barrier spins =',
                0140      &    FLOAT(BAR2_spinsCount(1,I))/FLOAT(BAR2_barrierCount(1,I))
                0141          ELSE
                0142           WRITE(msgBuf,'(A,A,1PE15.2)')
                0143      &    '//','      Avg. barrier spins =',
                0144      &    0.
                0145          ENDIF
                0146          CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,
                0147      &                     SQUEEZE_RIGHT , 1)
                0148        ENDDO
                0149       ENDIF
                0150 
                0151 C
                0152       RETURN
                0153       END
                0154