File indexing completed on 2018-03-02 18:36:06 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
0004
0005
0006
048ce7bdb7 Chri*0007 SUBROUTINE BAR2_INIT( myThid )
e7ea7a463f Alis*0008 IMPLICIT NONE
4c563c2ee9 Chri*0009
0010
0011
2b4c849245 Ed H*0012
4c563c2ee9 Chri*0013
0014
0015
0016
0017
0018
0019
0020
048ce7bdb7 Chri*0021 #include "SIZE.h"
0022 #include "EEPARAMS.h"
0023 #include "EESUPPORT.h"
0024 #include "BAR2.h"
0025
4c563c2ee9 Chri*0026
0027
0028
0029
048ce7bdb7 Chri*0030 INTEGER myThid
4c563c2ee9 Chri*0031
0032
0033
0034
048ce7bdb7 Chri*0035 INTEGER I
4c563c2ee9 Chri*0036
0037
048ce7bdb7 Chri*0038
0039 DO I = 1, lShare4
0040 BAR2_level(I,myThid) = 0
0041 BAR2_barrierCount(I,myThid) = 0
0042 BAR2_spinsCount(I,myThid) = 0
0043 BAR2_spinsCount(I,myThid) = 0
0044 BAR2_spinsMax (I,myThid) = 0
0045 BAR2_spinsMin (I,myThid) = 1000000000
0046 ENDDO
0047
0048 bar2CollectStatistics = .TRUE.
0049
0050 RETURN
0051 END
4c563c2ee9 Chri*0052
0053
0054
0055
0056
0057
048ce7bdb7 Chri*0058 SUBROUTINE BAR2( myThid )
e7ea7a463f Alis*0059 IMPLICIT NONE
4c563c2ee9 Chri*0060
0061
0062
0063
84f025f053 Jean*0064
4c563c2ee9 Chri*0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
048ce7bdb7 Chri*0079 #include "SIZE.h"
0080 #include "EEPARAMS.h"
0081 #include "EESUPPORT.h"
0082 #include "BAR2.h"
84f025f053 Jean*0083
4c563c2ee9 Chri*0084
0085
0086
048ce7bdb7 Chri*0087 INTEGER myThid
4c563c2ee9 Chri*0088
0089
0090
0091
0092
0093
0094
0095
0096
048ce7bdb7 Chri*0097 INTEGER myLevel
0098 INTEGER nDone
0099 INTEGER I
0100 INTEGER spinCount
4c563c2ee9 Chri*0101
0102
a6a74ff42f Chri*0103 #ifdef USE_OMP_THREADING
0104
0105 BAR2_barrierCount(1,myThid) = BAR2_barrierCount(1,myThid)+1
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116 RETURN
0117 #endif
0118
048ce7bdb7 Chri*0119 spinCount = 0
84f025f053 Jean*0120
048ce7bdb7 Chri*0121 IF ( myThid .NE. 1 ) THEN
0122
0123 BAR2_level(1,myThid) = BAR2_level(1,myThid)+1
0124 myLevel = BAR2_level(1,myThid)
0125 10 CONTINUE
0126 IF ( BAR2_level(1,1) .EQ. myLevel ) GOTO 11
0127 spinCount = spinCount+1
84f025f053 Jean*0128 CALL FOOL_THE_COMPILER( BAR2_level(1,1) )
048ce7bdb7 Chri*0129 GOTO 10
0130 11 CONTINUE
0131
0132 ELSE
0133
0134 myLevel = BAR2_level(1,1)
0135 12 CONTINUE
84f025f053 Jean*0136 CALL FOOL_THE_COMPILER( BAR2_level(1,1) )
048ce7bdb7 Chri*0137 nDone = 1
0138 DO I = 2, nThreads
0139 IF ( BAR2_level(1,1) .EQ. BAR2_level(1,I)-1 ) nDone = nDone+1
0140 ENDDO
0141 spinCount = spinCount+1
0142 IF ( nDone .LT. nThreads ) GOTO 12
0143
0144 BAR2_level(1,1) = myLevel+1
0145
0146 ENDIF
84f025f053 Jean*0147
048ce7bdb7 Chri*0148 BAR2_barrierCount(1,myThid) = BAR2_barrierCount(1,myThid)+1
0149 BAR2_spinsCount(1,myThid) = BAR2_spinsCount(1,myThid)+spinCount
0150 BAR2_spinsMax (1,myThid) = MAX(BAR2_spinsMax(1,myThid),spinCount)
0151 BAR2_spinsMin (1,myThid) = MIN(BAR2_spinsMin(1,myThid),spinCount)
84f025f053 Jean*0152
048ce7bdb7 Chri*0153 RETURN
0154 END