57 |
C myTiles :: List of nt tiles that this process owns. |
C myTiles :: List of nt tiles that this process owns. |
58 |
C commSetting :: Mode of communication used to exchnage with this neighbor |
C commSetting :: Mode of communication used to exchnage with this neighbor |
59 |
C myThid :: Thread number of this instance of EXCH2_RECV_RX1 |
C myThid :: Thread number of this instance of EXCH2_RECV_RX1 |
60 |
C |
C |
61 |
INTEGER tILo, tIHi, tiStride |
INTEGER tILo, tIHi, tiStride |
62 |
INTEGER tJLo, tJHi, tjStride |
INTEGER tJLo, tJHi, tjStride |
63 |
INTEGER tKLo, tKHi, tkStride |
INTEGER tKLo, tKHi, tkStride |
64 |
INTEGER i1Lo, i1Hi, j1Lo, j1Hi, k1Lo, k1Hi |
INTEGER i1Lo, i1Hi, j1Lo, j1Hi, k1Lo, k1Hi |
65 |
INTEGER i2Lo, i2Hi, j2Lo, j2Hi, k2Lo, k2Hi |
INTEGER i2Lo, i2Hi, j2Lo, j2Hi, k2Lo, k2Hi |
66 |
INTEGER thisTile, nN, thisI |
INTEGER thisTile, nN, thisI |
67 |
INTEGER e2BufrRecSize |
INTEGER e2BufrRecSize |
68 |
INTEGER mnb, nt |
INTEGER mnb, nt |
69 |
_RX e2Bufr1_RX( e2BufrRecSize, mnb, nt, 2 ) |
_RX e2Bufr1_RX( e2BufrRecSize, mnb, nt, 2 ) |
70 |
_RX e2Bufr2_RX( e2BufrRecSize, mnb, nt, 2 ) |
_RX e2Bufr2_RX( e2BufrRecSize, mnb, nt, 2 ) |
93 |
C mb, nb :: Selects e2Bufr, msgHandle record to use |
C mb, nb :: Selects e2Bufr, msgHandle record to use |
94 |
C ir :: |
C ir :: |
95 |
INTEGER mb, nb, ir |
INTEGER mb, nb, ir |
96 |
C oN :: Opposing send record number |
C oN :: Opposing send record number |
97 |
INTEGER oN |
INTEGER oN |
98 |
C Loop counters |
C Loop counters |
99 |
INTEGER I |
INTEGER I |
114 |
#endif |
#endif |
115 |
|
|
116 |
tt=exch2_neighbourId(nN, thisTile ) |
tt=exch2_neighbourId(nN, thisTile ) |
117 |
oN=exch2_opposingSend_record(nN, thisTile ) |
oN=exch2_opposingSend(nN, thisTile ) |
118 |
itl1reduce=0 |
itl1reduce=0 |
119 |
jtl1reduce=0 |
jtl1reduce=0 |
120 |
itl2reduce=0 |
itl2reduce=0 |
121 |
jtl2reduce=0 |
jtl2reduce=0 |
122 |
IF ( exch2_pi(1,oN,tt) .EQ. -1 ) itl1reduce=1 |
IF ( exch2_pij(1,oN,tt) .EQ. -1 ) itl1reduce=1 |
123 |
IF ( exch2_pj(1,oN,tt) .EQ. -1 ) itl1reduce=1 |
IF ( exch2_pij(3,oN,tt) .EQ. -1 ) itl1reduce=1 |
124 |
IF ( exch2_pi(2,oN,tt) .EQ. -1 ) jtl2reduce=1 |
IF ( exch2_pij(2,oN,tt) .EQ. -1 ) jtl2reduce=1 |
125 |
IF ( exch2_pj(2,oN,tt) .EQ. -1 ) jtl2reduce=1 |
IF ( exch2_pij(4,oN,tt) .EQ. -1 ) jtl2reduce=1 |
126 |
|
|
127 |
C Handle receive end data transport according to communication mechanism between |
C Handle receive end data transport according to communication mechanism between |
128 |
C source and target tile |
C source and target tile |
129 |
IF ( commSetting .EQ. 'P' ) THEN |
IF ( commSetting .EQ. 'P' ) THEN |
130 |
C 1 Need to check and spin on data ready assertion for multithreaded mode, for now do nothing i.e. |
C 1 Need to check and spin on data ready assertion for multithreaded mode, for now do nothing i.e. |
131 |
C assume only one thread per process. |
C assume only one thread per process. |
132 |
|
|
133 |
C 2 Need to set e2Bufr to use put buffer from opposing send. |
C 2 Need to set e2Bufr to use put buffer from opposing send. |
134 |
oN = exch2_opposingSend_record(nN, thisTile ) |
oN = exch2_opposingSend(nN, thisTile ) |
135 |
mb = oN |
mb = oN |
136 |
ir = 1 |
ir = 1 |
137 |
DO I=1,nt |
DO I=1,nt |
226 |
ENDDO |
ENDDO |
227 |
ENDDO |
ENDDO |
228 |
ENDDO |
ENDDO |
229 |
|
|
230 |
RETURN |
RETURN |
231 |
END |
END |
232 |
|
|