@@ -74,8 +74,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
74
74
& IDELWI ,IREST ,IDELRES ,IDELINT , &
75
75
& CDTBC ,IDELBC , &
76
76
& IASSI ,MARSTYPE , &
77
- & LLSOURCE ,LANAONLY ,LFRSTFLD ,IREFDATE, LUPDATE_GPU_GLOBALS, &
78
- & MODEL_TIME, IO_TIME
77
+ & LLSOURCE ,LANAONLY ,LFRSTFLD ,IREFDATE, LUPDATE_GPU_GLOBALS
79
78
USE YOWSPEC, ONLY : NBLKS ,NBLKE, MIJ
80
79
USE YOWTEST , ONLY : IU06
81
80
USE YOWTEXT , ONLY : ICPLEN ,CPATH ,CWI ,LRESTARTED
@@ -141,9 +140,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
141
140
INTEGER (KIND= JWIM) :: ICHNK
142
141
INTEGER (KIND= JWIM) :: JSTPNEMO, IDATE, ITIME
143
142
INTEGER (KIND= JWIM) :: IU04
144
- REAL (KIND= JWRB) :: TIME0, TIME1
145
143
146
- REAL (KIND= JPHOOK) :: ZHOOK_HANDLE
144
+ REAL (KIND= JPHOOK) :: ZHOOK_HANDLE, ZHOOK_HANDLE_DATA_OFFLOAD, &
145
+ & ZHOOK_HANDLE_ADVECTION_LOOP, ZHOOK_HANDLE_IO
147
146
REAL (KIND= JWRB), DIMENSION (NPROMA_WAM, NIPRMOUT, NCHNK) :: BOUT
148
147
149
148
CHARACTER (LEN= 2 ) :: MARSTYPEBAK
@@ -203,8 +202,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
203
202
! * 1. ADVECTION/PHYSICS TIME LOOP.
204
203
! ----------------------------
205
204
206
- TIME0 =- WAM_USER_CLOCK( )
205
+ IF (LHOOK) CALL DR_HOOK( ' ADVECTION_LOOP ' , 0 ,ZHOOK_HANDLE_ADVECTION_LOOP )
207
206
#ifdef WAM_GPU
207
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
208
208
CALL WVPRPT_LAND% SYNC_DEVICE_RDONLY(QUEUE= 0 )
209
209
CALL VARS_4D% F_FL1% SYNC_DEVICE_RDWR(QUEUE= 0 )
210
210
CALL BLK2GLO% SYNC_DEVICE_RDONLY(QUEUE= 0 )
@@ -225,6 +225,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
225
225
& TAUOCYD= .TRUE. , TAUOC= .TRUE. , PHIOCD= .TRUE. , PHIEPS= .TRUE. , PHIAW= .TRUE. , QUEUE= 2 )
226
226
CALL VARS_4D% F_XLLWS% SYNC_DEVICE_RDWR(QUEUE= 2 )
227
227
CALL MIJ% SYNC_DEVICE_RDWR(QUEUE= 2 )
228
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
228
229
#endif
229
230
230
231
ADVECTION : DO KADV = 1 ,NADV
@@ -347,12 +348,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
347
348
IF ( NGOUT > 0 .AND. (CDTINTT == CDTPRO .OR. LRST) ) THEN
348
349
! OUTPUT POINT SPECTRA (not usually used at ECMWF)
349
350
#ifdef WAM_GPU
351
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
350
352
CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
351
353
CALL VARS_4D% F_FL1% GET_HOST_DATA_RDONLY(VARS_4D% FL1)
352
354
! $acc exit data detach(VARS_4D%FL1)
353
355
CALL FF_NOW% GET_HOST_DATA_RDONLY(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
354
356
& WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
355
357
& CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
358
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
356
359
#endif
357
360
358
361
CALL OUTWPSP (VARS_4D% FL1, FF_NOW)
@@ -407,12 +410,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
407
410
ENDIF
408
411
409
412
#ifdef WAM_GPU
413
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
410
414
CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
411
415
CALL VARS_4D% F_FL1% GET_HOST_DATA_RDONLY(VARS_4D% FL1)
412
416
! $acc exit data detach(VARS_4D%FL1)
413
417
CALL FF_NOW% GET_HOST_DATA_RDONLY(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
414
418
& WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
415
419
& CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
420
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
416
421
#endif
417
422
418
423
CALL OUTSPEC(VARS_4D% FL1, FF_NOW)
@@ -429,6 +434,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
429
434
! --------------------------------------
430
435
IF ( .NOT. LGRIBOUT .OR. LDWRRE ) THEN
431
436
#ifdef WAM_GPU
437
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
432
438
CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 3 )
433
439
CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 4 )
434
440
@@ -439,9 +445,10 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
439
445
& CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. )
440
446
CALL WVENVI% GET_HOST_DATA_RDONLY(DEPTH= .TRUE. , DELLAM1= .TRUE. , COSPHM1= .TRUE. , UCUR= .TRUE. , VCUR= .TRUE. , &
441
447
& EMAXDPT= .TRUE. , IOBND= .TRUE. , IODP= .TRUE. )
448
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
442
449
#endif
443
450
444
- TIME1 =- WAM_USER_CLOCK( )
451
+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 0 ,ZHOOK_HANDLE_IO )
445
452
CALL SAVSTRESS(WVENVI, FF_NOW, NBLKS, NBLKE, CDTPRO, CDATEF)
446
453
WRITE (IU06,* ) ' '
447
454
WRITE (IU06,* ) ' BINARY STRESS FILE DISPOSED AT........ CDTPRO = ' , CDTPRO
@@ -451,7 +458,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
451
458
WRITE (IU06,* ) ' BINARY WAVE SPECTRA DISPOSED AT........ CDTPRO = ' , CDTPRO
452
459
WRITE (IU06,* ) ' '
453
460
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)
455
462
ENDIF
456
463
457
464
@@ -521,9 +528,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
521
528
MARSTYPE= ' an'
522
529
ENDIF
523
530
524
- TIME1 =- WAM_USER_CLOCK( )
531
+ IF (LHOOK) CALL DR_HOOK( ' IO_TIME ' , 0 ,ZHOOK_HANDLE_IO )
525
532
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)
527
534
LLFLUSH = .TRUE.
528
535
529
536
MARSTYPE= MARSTYPEBAK
@@ -535,12 +542,14 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
535
542
536
543
537
544
#ifdef WAM_GPU
545
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
538
546
CALL VARS_4D% F_FL1% SYNC_DEVICE_RDWR(QUEUE= 0 )
539
547
CALL WVENVI% SYNC_DEVICE_RDWR(DEPTH= .TRUE. , DELLAM1= .TRUE. , COSPHM1= .TRUE. , UCUR= .TRUE. , VCUR= .TRUE. , &
540
548
& EMAXDPT= .TRUE. , IOBND= .TRUE. , IODP= .TRUE. , QUEUE= 0 )
541
549
CALL FF_NOW% SYNC_DEVICE_RDWR(AIRD= .TRUE. , WDWAVE= .TRUE. , CICOVER= .TRUE. , WSWAVE= .TRUE. , &
542
550
& WSTAR= .TRUE. , UFRIC= .TRUE. , TAUW= .TRUE. , TAUWDIR= .TRUE. , Z0M= .TRUE. , Z0B= .TRUE. , &
543
551
& CHRNCK= .TRUE. , CITHICK= .TRUE. , USTRA= .TRUE. , VSTRA= .TRUE. , QUEUE= 1 )
552
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
544
553
#endif
545
554
546
555
! * 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, &
593
602
IF (MOD (NEMOWSTEP,NEMOFRCO) == 0 ) THEN
594
603
595
604
#ifdef WAM_GPU
605
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
596
606
CALL WAIT_FOR_ASYNC_QUEUE(QUEUE= 5 )
597
607
CALL WAM2NEMO% GET_HOST_DATA_RDONLY(NEMOUSTOKES= .TRUE. , NEMOVSTOKES= .TRUE. , NEMOSTRN= .TRUE. , &
598
608
& NPHIEPS= .TRUE. , NTAUOC= .TRUE. , NSWH= .TRUE. , NMWP= .TRUE. , NEMOTAUX= .TRUE. , &
599
609
& NEMOTAUY= .TRUE. , NEMOWSWAVE= .TRUE. , NEMOPHIF= .TRUE. )
610
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
600
611
#endif
601
612
602
613
CALL UPDNEMOFIELDS
@@ -612,9 +623,11 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
612
623
NEMOCSTEP = NEMOCSTEP + NEMONSTEP
613
624
614
625
#ifdef WAM_GPU
626
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
615
627
CALL WAM2NEMO% SYNC_DEVICE_RDWR(NEMOUSTOKES= .TRUE. , NEMOVSTOKES= .TRUE. , NEMOSTRN= .TRUE. , &
616
628
& NPHIEPS= .TRUE. , NTAUOC= .TRUE. , NSWH= .TRUE. , NMWP= .TRUE. , NEMOTAUX= .TRUE. , &
617
629
& NEMOTAUY= .TRUE. , NEMOWSWAVE= .TRUE. , NEMOPHIF= .TRUE. , QUEUE= 2 )
630
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
618
631
#endif
619
632
ENDIF
620
633
ENDIF
@@ -625,6 +638,7 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
625
638
ENDDO ADVECTION
626
639
627
640
#ifdef WAM_GPU
641
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,0 ,ZHOOK_HANDLE_DATA_OFFLOAD)
628
642
CALL WVPRPT_LAND% GET_HOST_DATA_RDWR()
629
643
CALL WVPRPT% GET_HOST_DATA_RDWR()
630
644
CALL WVENVI% GET_HOST_DATA_RDWR()
@@ -646,9 +660,9 @@ SUBROUTINE WAMODEL (NADV, LDSTOP, LDWRRE, BLK2GLO, &
646
660
CALL VARS_4D% DELETE_DEVICE_DATA()
647
661
CALL MIJ% DELETE_DEVICE_DATA()
648
662
CALL BLK2GLO% DELETE_DEVICE_DATA()
663
+ IF (LHOOK) CALL DR_HOOK(' DATA_OFFLOAD' ,1 ,ZHOOK_HANDLE_DATA_OFFLOAD)
649
664
#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)
652
666
653
667
IF (LHOOK) CALL DR_HOOK(' WAMODEL' ,1 ,ZHOOK_HANDLE)
654
668
0 commit comments