- Timestamp:
- 2020-06-07T18:26:09+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/lib_mpp.F90
r13024 r13056 19 19 !! 3.2 ! 2009 (O. Marti) add mpp_ini_znl 20 20 !! 4.0 ! 2011 (G. Madec) move ctl_ routines from in_out_manager 21 !! 3.5 ! 2012 (S.Mocavero, I. Epicoco) Add mpp_lnk_bdy_3d/2d routines to optimize the BDY comm.22 21 !! 3.5 ! 2013 (C. Ethe, G. Madec) message passing arrays as local variables 23 22 !! 3.5 ! 2013 (S.Mocavero, I.Epicoco - CMCC) north fold optimizations … … 87 86 PUBLIC mpp_ini_znl 88 87 PUBLIC mppsend, mpprecv ! needed by TAM and ICB routines 89 PUBLIC mpp_lnk_bdy_2d, mpp_lnk_bdy_3d, mpp_lnk_bdy_4d90 88 91 89 !! * Interfaces … … 179 177 INTEGER, DIMENSION(nbdelay), PUBLIC :: ndelayid = -1 !: mpi request id of the delayed operations 180 178 181 ! timing summary report182 REAL(wp), DIMENSION(2), PUBLIC :: waiting_time = 0._wp183 REAL(wp) , PUBLIC :: compute_time = 0._wp, elapsed_time = 0._wp184 185 179 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tampon ! buffer in case of bsend 186 180 … … 435 429 436 430 !!---------------------------------------------------------------------- 437 !! *** routine mpp_lnk_bdy_(2,3,4)d ***438 !!439 !! * Argument : dummy argument use in mpp_lnk_... routines440 !! ptab : array or pointer of arrays on which the boundary condition is applied441 !! cd_nat : nature of array grid-points442 !! psgn : sign used across the north fold boundary443 !! kb_bdy : BDY boundary set444 !! kfld : optional, number of pt3d arrays445 !!----------------------------------------------------------------------446 !447 ! !== 2D array and array of 2D pointer ==!448 !449 # define DIM_2d450 # define ROUTINE_BDY mpp_lnk_bdy_2d451 # include "mpp_bdy_generic.h90"452 # undef ROUTINE_BDY453 # undef DIM_2d454 !455 ! !== 3D array and array of 3D pointer ==!456 !457 # define DIM_3d458 # define ROUTINE_BDY mpp_lnk_bdy_3d459 # include "mpp_bdy_generic.h90"460 # undef ROUTINE_BDY461 # undef DIM_3d462 !463 ! !== 4D array and array of 4D pointer ==!464 !465 # define DIM_4d466 # define ROUTINE_BDY mpp_lnk_bdy_4d467 # include "mpp_bdy_generic.h90"468 # undef ROUTINE_BDY469 # undef DIM_4d470 471 !!----------------------------------------------------------------------472 431 !! 473 432 !! load_array & mpp_lnk_2d_9 à generaliser a 3D et 4D … … 640 599 ! send y_in into todelay(idvar)%y1d with a non-blocking communication 641 600 #if defined key_mpi2 642 IF( ln_timing ) CALL tic_tac( .TRUE., ld_global = .TRUE.)643 601 CALL mpi_allreduce( y_in(:), todelay(idvar)%y1d(:), isz, MPI_DOUBLE_COMPLEX, mpi_sumdd, ilocalcomm, ndelayid(idvar), ierr ) 644 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.)645 602 #else 646 603 CALL mpi_iallreduce( y_in(:), todelay(idvar)%y1d(:), isz, MPI_DOUBLE_COMPLEX, mpi_sumdd, ilocalcomm, ndelayid(idvar), ierr ) … … 703 660 ! send p_in into todelay(idvar)%z1d with a non-blocking communication 704 661 #if defined key_mpi2 705 IF( ln_timing ) CALL tic_tac( .TRUE., ld_global = .TRUE.)706 662 CALL mpi_allreduce( p_in(:), todelay(idvar)%z1d(:), isz, MPI_DOUBLE_PRECISION, mpi_max, ilocalcomm, ndelayid(idvar), ierr ) 707 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.)708 663 #else 709 664 CALL mpi_iallreduce( p_in(:), todelay(idvar)%z1d(:), isz, MPI_DOUBLE_PRECISION, mpi_max, ilocalcomm, ndelayid(idvar), ierr ) … … 725 680 IF( ndelayid(kid) /= -2 ) THEN 726 681 #if ! defined key_mpi2 727 IF( ln_timing ) CALL tic_tac( .TRUE., ld_global = .TRUE.)728 682 CALL mpi_wait( ndelayid(kid), MPI_STATUS_IGNORE, ierr ) ! make sure todelay(kid) is received 729 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.)730 683 #endif 731 684 IF( ASSOCIATED(todelay(kid)%y1d) ) todelay(kid)%z1d(:) = REAL(todelay(kid)%y1d(:), wp) ! define %z1d from %y1d … … 1236 1189 itaille = jpimax * ( ipj + 2*kextj ) 1237 1190 ! 1238 IF( ln_timing ) CALL tic_tac(.TRUE.)1239 1191 CALL MPI_ALLGATHER( znorthloc_e(1,1-kextj) , itaille, MPI_DOUBLE_PRECISION, & 1240 1192 & znorthgloio_e(1,1-kextj,1), itaille, MPI_DOUBLE_PRECISION, & 1241 1193 & ncomm_north, ierr ) 1242 1194 ! 1243 IF( ln_timing ) CALL tic_tac(.FALSE.)1244 1195 ! 1245 1196 DO jr = 1, ndim_rank_north ! recover the global north array … … 1367 1318 ! ! Migrations 1368 1319 imigr = ipreci * ( jpj + 2*kextj ) 1369 !1370 IF( ln_timing ) CALL tic_tac(.TRUE.)1371 1320 ! 1372 1321 SELECT CASE ( nbondi ) … … 1388 1337 END SELECT 1389 1338 ! 1390 IF( ln_timing ) CALL tic_tac(.FALSE.)1391 !1392 1339 ! ! Write Dirichlet lateral conditions 1393 1340 iihom = jpi - nn_hls … … 1424 1371 ! ! Migrations 1425 1372 imigr = iprecj * ( jpi + 2*kexti ) 1426 !1427 IF( ln_timing ) CALL tic_tac(.TRUE.)1428 1373 ! 1429 1374 SELECT CASE ( nbondj ) … … 1444 1389 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err) 1445 1390 END SELECT 1446 !1447 IF( ln_timing ) CALL tic_tac(.FALSE.)1448 1391 ! 1449 1392 ! ! Write Dirichlet lateral conditions
Note: See TracChangeset
for help on using the changeset viewer.