Changeset 10300 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE
- Timestamp:
- 2018-11-12T17:49:08+01:00 (5 years ago)
- Location:
- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90
r10297 r10300 169 169 170 170 ! timing summary report 171 REAL(wp), PUBLIC :: waiting_time = 0._wp, compute_time = 0._wp, elapsed_time = 0._wp 171 REAL(wp), DIMENSION(2), PUBLIC :: waiting_time = 0._wp 172 REAL(wp) , PUBLIC :: compute_time = 0._wp, elapsed_time = 0._wp 172 173 173 174 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tampon ! buffer in case of bsend … … 596 597 597 598 IF ( ireq /= -1 ) THEN ! get ld_switch(2) from ll_switch (from previous call) 599 IF( ln_timing ) CALL tic_tac(.TRUE., ld_global = .TRUE.) 598 600 CALL mpi_wait(ireq, MPI_STATUS_IGNORE, ierror ) 599 601 ld_switch(2) = ll_switch 602 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.) 600 603 ENDIF 601 604 IF( .NOT. ldlast ) & ! send ll_switch to be received on next call … … 1464 1467 1465 1468 1466 SUBROUTINE tic_tac (l_tic) 1467 1468 LOGICAL, INTENT(IN) :: l_tic 1469 REAL(wp), SAVE :: tic_wt, tic_ct = 0._wp 1469 SUBROUTINE tic_tac (ld_tic, ld_global) 1470 1471 LOGICAL, INTENT(IN) :: ld_tic 1472 LOGICAL, OPTIONAL, INTENT(IN) :: ld_global 1473 REAL(wp), DIMENSION(2), SAVE :: tic_wt 1474 REAL(wp), SAVE :: tic_ct = 0._wp 1475 INTEGER :: ii 1470 1476 1471 1477 IF( ncom_stp <= nit000 ) RETURN 1472 1478 IF( ncom_stp == nitend ) RETURN 1479 ii = 1 1480 IF( PRESENT( ld_global ) ) THEN 1481 IF( ld_global ) ii = 2 1482 END IF 1473 1483 1474 1484 #if defined key_mpp_mpi 1475 IF ( l _tic ) THEN1476 tic_wt = MPI_Wtime()! start count tic->tac (waiting time)1485 IF ( ld_tic ) THEN 1486 tic_wt(ii) = MPI_Wtime() ! start count tic->tac (waiting time) 1477 1487 IF ( tic_ct > 0.0_wp ) compute_time = compute_time + MPI_Wtime() - tic_ct ! cumulate count tac->tic 1478 1488 ELSE 1479 waiting_time = waiting_time + MPI_Wtime() - tic_wt! cumulate count tic->tac1489 waiting_time(ii) = waiting_time(ii) + MPI_Wtime() - tic_wt(ii) ! cumulate count tic->tac 1480 1490 tic_ct = MPI_Wtime() ! start count tac->tic (waiting time) 1481 1491 ENDIF -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_allreduce_generic.h90
r10299 r10300 56 56 ENDIF 57 57 58 IF( ln_timing ) CALL tic_tac(.TRUE., ld_global = .TRUE.) 58 59 ALLOCATE(work(ipi)) 59 60 CALL mpi_allreduce( ARRAY_IN(:), work, ipi, MPI_TYPE, MPI_OPERATION, ilocalcomm, ierror ) … … 62 63 ENDDO 63 64 DEALLOCATE(work) 65 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.) 64 66 ! 65 67 IF( narea == 1 .AND. ncom_stp == nit000+5 ) THEN -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/timing.F90
r10297 r10300 292 292 REAL(wp), DIMENSION(:), ALLOCATABLE :: timing_glob 293 293 REAL(wp) :: zsypd ! simulated years per day (Balaji 2017) 294 REAL(wp) :: zperc 294 REAL(wp) :: zperc, ztot 295 295 296 296 ll_averep = .TRUE. … … 370 370 371 371 #if defined key_mpp_mpi 372 ALLOCATE(timing_glob( 3*jpnij), stat=icode)373 CALL MPI_GATHER( (/compute_time, waiting_time , elapsed_time/), 3, MPI_DOUBLE_PRECISION, &374 & timing_glob, 3, MPI_DOUBLE_PRECISION, 0, MPI_COMM_OCE, icode)372 ALLOCATE(timing_glob(4*jpnij), stat=icode) 373 CALL MPI_GATHER( (/compute_time, waiting_time(1), waiting_time(2), elapsed_time/), & 374 & 4, MPI_DOUBLE_PRECISION, timing_glob, 4, MPI_DOUBLE_PRECISION, 0, MPI_COMM_OCE, icode) 375 375 IF( narea == 1 ) THEN 376 376 WRITE(numtime,*) ' ' … … 380 380 WRITE(numtime,*) ' ' 381 381 DO ji = 1, jpnij 382 z perc = timing_glob(3*ji-1) + timing_glob(3*ji-2)383 IF (zperc /= 0. ) zperc = timing_glob(3*ji-1) / zperc * 100.384 WRITE(numtime,'(A20,F11.6, A34,I8)') 'Computing time : ',timing_glob(3*ji-2), ' on MPI rank : ', ji385 WRITE(numtime,'(A2 0,F11.6,A2, F4.1,A3,A25,I8)') 'Waiting time : ',timing_glob(3*ji-1) &382 ztot = SUM( timing_glob(4*ji-3:4*ji-1) ) 383 WRITE(numtime,'(A28,F11.6, A34,I8)') 'Computing time : ',timing_glob(4*ji-3), ' on MPI rank : ', ji 384 IF ( ztot /= 0. ) zperc = timing_glob(4*ji-2) / ztot * 100. 385 WRITE(numtime,'(A28,F11.6,A2, F4.1,A3,A25,I8)') 'Waiting lbc_lnk time : ',timing_glob(4*ji-2) & 386 386 & , ' (', zperc,' %)', ' on MPI rank : ', ji 387 zsypd = rn_rdt * REAL(nitend-nit000-1, wp) / (timing_glob(3*ji) * 365.) 388 WRITE(numtime,'(A20,F11.6,A7,F10.3,A2,A15,I8)') 'Total time : ',timing_glob(3*ji ) & 387 IF ( ztot /= 0. ) zperc = timing_glob(4*ji-1) / ztot * 100. 388 WRITE(numtime,'(A28,F11.6,A2, F4.1,A3,A25,I8)') 'Waiting global time : ',timing_glob(4*ji-1) & 389 & , ' (', zperc,' %)', ' on MPI rank : ', ji 390 zsypd = rn_rdt * REAL(nitend-nit000-1, wp) / (timing_glob(4*ji) * 365.) 391 WRITE(numtime,'(A28,F11.6,A7,F10.3,A2,A15,I8)') 'Total time : ',timing_glob(4*ji ) & 389 392 & , ' (SYPD: ', zsypd, ')', ' on MPI rank : ', ji 390 393 END DO
Note: See TracChangeset
for help on using the changeset viewer.