@@ -74,8 +74,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
7474 & IDELWI ,IREST ,IDELRES ,IDELINT , &
7575 & CDTBC ,IDELBC , &
7676 & IASSI ,MARSTYPE , &
77- & LLSOURCE ,LANAONLY ,LFRSTFLD ,IREFDATE, LUPDATE_GPU_GLOBALS, &
78- & MODEL_TIME, IO_TIME
77+ & LLSOURCE ,LANAONLY ,LFRSTFLD ,IREFDATE, LUPDATE_GPU_GLOBALS
7978 USE YOWSPEC, ONLY : NBLKS ,NBLKE, MIJ
8079 USE YOWTEST , ONLY : IU06
8180 USE YOWTEXT , ONLY : ICPLEN ,CPATH ,CWI ,LRESTARTED
@@ -141,9 +140,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
141140 INTEGER (KIND= JWIM) :: ICHNK
142141 INTEGER (KIND= JWIM) :: JSTPNEMO, IDATE, ITIME
143142 INTEGER (KIND= JWIM) :: IU04
144- REAL (KIND= JWRB) :: TIME0, TIME1
145143
146- REAL (KIND= JPHOOK) :: ZHOOK_HANDLE
144+ REAL (KIND= JPHOOK) :: ZHOOK_HANDLE, ZHOOK_HANDLE_DATA_OFFLOAD, &
145+ & ZHOOK_HANDLE_ADVECTION_LOOP, ZHOOK_HANDLE_IO
147146 REAL (KIND= JWRB), DIMENSION (NPROMA_WAM, NIPRMOUT, NCHNK) :: BOUT
148147
149148 CHARACTER (LEN= 2 ) :: MARSTYPEBAK
@@ -203,8 +202,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
203202! * 1. ADVECTION/PHYSICS TIME LOOP.
204203! ----------------------------
205204
206- TIME0 =- WAM_USER_CLOCK( )
205+ IF (LHOOK) CALL DR_HOOK( ' ADVECTION_LOOP ' , 0 ,ZHOOK_HANDLE_ADVECTION_LOOP )
207206#ifdef WAM_GPU
207+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
208208 CALL WVPRPT_LAND% SYNC_DEVICE_RDONLY(QUEUE= 0 )
209209 CALL VARS_4D% F_FL1% SYNC_DEVICE_RDWR(QUEUE= 0 )
210210 CALL BLK2GLO% SYNC_DEVICE_RDONLY(QUEUE= 0 )
@@ -225,6 +225,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
225225 & TAUOCYD= .TRUE. , TAUOC= .TRUE. , PHIOCD= .TRUE. , PHIEPS= .TRUE. , PHIAW= .TRUE. , QUEUE= 2 )
226226 CALL VARS_4D% F_XLLWS% SYNC_DEVICE_RDWR(QUEUE= 2 )
227227 CALL MIJ% SYNC_DEVICE_RDWR(QUEUE= 2 )
228+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
228229#endif
229230
230231 ADVECTION : DO KADV = 1 ,NADV
@@ -347,12 +348,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
347348 IF ( NGOUT > 0 .AND. (CDTINTT == CDTPRO .OR. LRST) ) THEN
348349! OUTPUT POINT SPECTRA (not usually used at ECMWF)
349350#ifdef WAM_GPU
351+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
350352 CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
351353 CALL VARS_4D% F_FL1% GET_HOST_DATA_RDONLY(VARS_4D% FL1)
352354 ! $acc exit data detach(VARS_4D%FL1)
353355 CALL FF_NOW% GET_HOST_DATA_RDONLY(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
354356 & WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
355357 & CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
358+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
356359#endif
357360
358361 CALL OUTWPSP (VARS_4D% FL1, FF_NOW)
@@ -407,12 +410,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
407410 ENDIF
408411
409412#ifdef WAM_GPU
413+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
410414 CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
411415 CALL VARS_4D% F_FL1% GET_HOST_DATA_RDONLY(VARS_4D% FL1)
412416 ! $acc exit data detach(VARS_4D%FL1)
413417 CALL FF_NOW% GET_HOST_DATA_RDONLY(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
414418 & WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
415419 & CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
420+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
416421#endif
417422
418423 CALL OUTSPEC(VARS_4D% FL1, FF_NOW)
@@ -429,6 +434,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
429434! --------------------------------------
430435 IF ( .NOT. LGRIBOUT .OR. LDWRRE ) THEN
431436#ifdef WAM_GPU
437+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
432438 CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
433439 CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 4 )
434440
@@ -439,9 +445,10 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
439445 & CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
440446 CALL WVENVI% GET_HOST_DATA_RDONLY(DEPTH= .TRUE. , DELLAM1= .TRUE. , COSPHM1= .TRUE. , UCUR= .TRUE. , VCUR= .TRUE. , &
441447 & EMAXDPT= .TRUE. , IOBND= .TRUE. , IODP= .TRUE. )
448+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
442449#endif
443450
444- TIME1 =- WAM_USER_CLOCK( )
451+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 0 ,ZHOOK_HANDLE_IO )
445452 CALL SAVSTRESS(WVENVI, FF_NOW, NBLKS, NBLKE, CDTPRO, CDATEF)
446453 WRITE (IU06,* ) ' '
447454 WRITE (IU06,* ) ' BINARY STRESS FILE DISPOSED AT........ CDTPRO = ' , CDTPRO
@@ -451,7 +458,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
451458 WRITE (IU06,* ) ' BINARY WAVE SPECTRA DISPOSED AT........ CDTPRO = ' , CDTPRO
452459 WRITE (IU06,* ) ' '
453460 CALL FLUSH(IU06)
454- IO_TIME = IO_TIME + (TIME1 + WAM_USER_CLOCK()) * 1.E-06
461+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 1 ,ZHOOK_HANDLE_IO)
455462 ENDIF
456463
457464
@@ -521,9 +528,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
521528 MARSTYPE= ' an'
522529 ENDIF
523530
524- TIME1 =- WAM_USER_CLOCK( )
531+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 0 ,ZHOOK_HANDLE_IO )
525532 CALL OUTWINT(BOUT)
526- IO_TIME = IO_TIME + (TIME1 + WAM_USER_CLOCK()) * 1.E-06
533+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 1 ,ZHOOK_HANDLE_IO)
527534 LLFLUSH = .TRUE.
528535
529536 MARSTYPE= MARSTYPEBAK
@@ -535,12 +542,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
535542
536543
537544#ifdef WAM_GPU
545+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
538546 CALL VARS_4D% F_FL1% SYNC_DEVICE_RDWR(QUEUE= 0 )
539547 CALL WVENVI% SYNC_DEVICE_RDWR(DEPTH= .TRUE. , DELLAM1= .TRUE. , COSPHM1= .TRUE. , UCUR= .TRUE. , VCUR= .TRUE. , &
540548 & EMAXDPT= .TRUE. , IOBND= .TRUE. , IODP= .TRUE. , QUEUE= 0 )
541549 CALL FF_NOW% SYNC_DEVICE_RDWR(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
542550 & WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
543551 & CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. , QUEUE= 1 )
552+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
544553#endif
545554
546555! * 1.10 FLUSH FDB IF IT HAS BEEN USED AND IT IS NOT AN ANALYSIS (it will be done in *wamassi*)
@@ -593,10 +602,12 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
593602 IF (MOD (NEMOWSTEP,NEMOFRCO) == 0 ) THEN
594603
595604#ifdef WAM_GPU
605+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
596606 CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 5 )
597607 CALL WAM2NEMO% GET_HOST_DATA_RDONLY(NEMOUSTOKES= .TRUE. , NEMOVSTOKES= .TRUE. , NEMOSTRN= .TRUE. , &
598608 & NPHIEPS= .TRUE. , NTAUOC= .TRUE. , NSWH= .TRUE. , NMWP= .TRUE. , NEMOTAUX= .TRUE. , &
599609 & NEMOTAUY= .TRUE. , NEMOWSWAVE= .TRUE. , NEMOPHIF= .TRUE. )
610+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
600611#endif
601612
602613 CALL UPDNEMOFIELDS
@@ -612,9 +623,11 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
612623 NEMOCSTEP = NEMOCSTEP + NEMONSTEP
613624
614625#ifdef WAM_GPU
626+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
615627 CALL WAM2NEMO% SYNC_DEVICE_RDWR(NEMOUSTOKES= .TRUE. , NEMOVSTOKES= .TRUE. , NEMOSTRN= .TRUE. , &
616628 & NPHIEPS= .TRUE. , NTAUOC= .TRUE. , NSWH= .TRUE. , NMWP= .TRUE. , NEMOTAUX= .TRUE. , &
617629 & NEMOTAUY= .TRUE. , NEMOWSWAVE= .TRUE. , NEMOPHIF= .TRUE. , QUEUE= 2 )
630+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
618631#endif
619632 ENDIF
620633 ENDIF
@@ -625,6 +638,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
625638 ENDDO ADVECTION
626639
627640#ifdef WAM_GPU
641+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
628642 CALL WVPRPT_LAND% GET_HOST_DATA_RDWR()
629643 CALL WVPRPT% GET_HOST_DATA_RDWR()
630644 CALL WVENVI% GET_HOST_DATA_RDWR()
@@ -646,9 +660,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
646660 CALL VARS_4D% DELETE_DEVICE_DATA()
647661 CALL MIJ% DELETE_DEVICE_DATA()
648662 CALL BLK2GLO% DELETE_DEVICE_DATA()
663+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
649664#endif
650-
651- MODEL_TIME = MODEL_TIME + (TIME0+ WAM_USER_CLOCK())* 1.E-06
665+ IF (LHOOK) CALL DR_HOOK(' ADVECTION_LOOP' ,1 ,ZHOOK_HANDLE_ADVECTION_LOOP)
652666
653667IF (LHOOK) CALL DR_HOOK(' WAMODEL' ,1 ,ZHOOK_HANDLE)
654668
0 commit comments