- Timestamp:
- 2018-06-08T14:52:48+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_lnk_generic.h90
r9690 r9772 150 150 imigr = nn_hls * jpj * ipk * ipl * ipf 151 151 ! 152 SELECT CASE ( nbondi ) 153 CASE ( -1 ) 154 CALL mppsend( 2, zt3we(1,1,1,1,1,1), imigr, noea, ml_req1 ) 155 CALL mpprecv( 1, zt3ew(1,1,1,1,1,2), imigr, noea ) 156 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err) 157 CASE ( 0 ) 158 CALL mppsend( 1, zt3ew(1,1,1,1,1,1), imigr, nowe, ml_req1 ) 159 CALL mppsend( 2, zt3we(1,1,1,1,1,1), imigr, noea, ml_req2 ) 160 CALL mpprecv( 1, zt3ew(1,1,1,1,1,2), imigr, noea ) 161 CALL mpprecv( 2, zt3we(1,1,1,1,1,2), imigr, nowe ) 162 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err) 163 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err) 164 CASE ( 1 ) 165 CALL mppsend( 1, zt3ew(1,1,1,1,1,1), imigr, nowe, ml_req1 ) 166 CALL mpprecv( 2, zt3we(1,1,1,1,1,2), imigr, nowe ) 167 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 168 END SELECT 152 IF ( ncom_stp == nit000 ) then 153 n_sequence = n_sequence + 1 154 icomm_sequence(n_sequence,1) = ipk 155 icomm_sequence(n_sequence,2) = ipf 156 ! write(6,'(A,6I4)') 'size comm ', nn_hls, jpi, jpj, ipk, ipl, ipf 157 ELSE IF ( mpprank == 0 .AND. ncom_stp == (nit000+1) .AND. l_print_comm_report ) THEN 158 write(6,*) 'Communication pattern report : ' 159 write(6,*) ' ' 160 write(6,'(A,I3)') ' Exchanged halos : ', n_sequence 161 jj = 0; jk = 0; jf = 0; jh = 0 162 DO ji = 1, n_sequence 163 IF ( icomm_sequence(ji,1) .gt. 1 ) jk = jk + 1 164 IF ( icomm_sequence(ji,2) .gt. 1 ) jf = jf + 1 165 IF ( icomm_sequence(ji,1) .gt. 1 .AND. icomm_sequence(ji,2) .gt. 1 ) jj = jj + 1 166 jh = MAX (jh, icomm_sequence(ji,1)*icomm_sequence(ji,2)) 167 END DO 168 write(6,'(A,I3)') ' 3D Exchanged halos : ', jk 169 write(6,'(A,I3)') ' Multi arrays exchanged halos : ', jf 170 write(6,'(A,I3)') ' from which 3D : ', jj 171 write(6,'(A,I10)') ' array max size : ', jh*jpi*jpj 172 l_print_comm_report = .FALSE. 173 END IF 174 ! 175 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 176 ! 177 CALL tic_tac(.TRUE.) 178 ! 179 SELECT CASE ( nbondi ) 180 CASE ( -1 ) 181 CALL mppsend( 2, zt3we(1,1,1,1,1,1), imigr, noea, ml_req1 ) 182 CALL mpprecv( 1, zt3ew(1,1,1,1,1,2), imigr, noea ) 183 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err) 184 CASE ( 0 ) 185 CALL mppsend( 1, zt3ew(1,1,1,1,1,1), imigr, nowe, ml_req1 ) 186 CALL mppsend( 2, zt3we(1,1,1,1,1,1), imigr, noea, ml_req2 ) 187 CALL mpprecv( 1, zt3ew(1,1,1,1,1,2), imigr, noea ) 188 CALL mpprecv( 2, zt3we(1,1,1,1,1,2), imigr, nowe ) 189 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err) 190 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err) 191 CASE ( 1 ) 192 CALL mppsend( 1, zt3ew(1,1,1,1,1,1), imigr, nowe, ml_req1 ) 193 CALL mpprecv( 2, zt3we(1,1,1,1,1,2), imigr, nowe ) 194 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 195 END SELECT 196 END IF 169 197 ! 170 198 ! ! Write Dirichlet lateral conditions … … 226 254 imigr = nn_hls * jpi * ipk * ipl * ipf 227 255 ! 228 SELECT CASE ( nbondj ) 229 CASE ( -1 ) 230 CALL mppsend( 4, zt3sn(1,1,1,1,1,1), imigr, nono, ml_req1 ) 231 CALL mpprecv( 3, zt3ns(1,1,1,1,1,2), imigr, nono ) 232 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 233 CASE ( 0 ) 234 CALL mppsend( 3, zt3ns(1,1,1,1,1,1), imigr, noso, ml_req1 ) 235 CALL mppsend( 4, zt3sn(1,1,1,1,1,1), imigr, nono, ml_req2 ) 236 CALL mpprecv( 3, zt3ns(1,1,1,1,1,2), imigr, nono ) 237 CALL mpprecv( 4, zt3sn(1,1,1,1,1,2), imigr, noso ) 238 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 239 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err ) 240 CASE ( 1 ) 241 CALL mppsend( 3, zt3ns(1,1,1,1,1,1), imigr, noso, ml_req1 ) 242 CALL mpprecv( 4, zt3sn(1,1,1,1,1,2), imigr, noso ) 243 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 244 END SELECT 256 IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN 257 258 SELECT CASE ( nbondj ) 259 CASE ( -1 ) 260 CALL mppsend( 4, zt3sn(1,1,1,1,1,1), imigr, nono, ml_req1 ) 261 CALL mpprecv( 3, zt3ns(1,1,1,1,1,2), imigr, nono ) 262 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 263 CASE ( 0 ) 264 CALL mppsend( 3, zt3ns(1,1,1,1,1,1), imigr, noso, ml_req1 ) 265 CALL mppsend( 4, zt3sn(1,1,1,1,1,1), imigr, nono, ml_req2 ) 266 CALL mpprecv( 3, zt3ns(1,1,1,1,1,2), imigr, nono ) 267 CALL mpprecv( 4, zt3sn(1,1,1,1,1,2), imigr, noso ) 268 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 269 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err ) 270 CASE ( 1 ) 271 CALL mppsend( 3, zt3ns(1,1,1,1,1,1), imigr, noso, ml_req1 ) 272 CALL mpprecv( 4, zt3sn(1,1,1,1,1,2), imigr, noso ) 273 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err ) 274 END SELECT 275 ! imbalance measurement 276 CALL tic_tac(.FALSE.) 277 ! 278 END IF 245 279 ! 246 280 ! ! Write Dirichlet lateral conditions
Note: See TracChangeset
for help on using the changeset viewer.