From b5408916644d5e85973eabfe79f879220c14b5df Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 3 Oct 2023 15:55:53 +0200 Subject: [PATCH] Philippe 03/10/2023: OpenACC: several corrections and improvements --- src/MNH/advection_uvw.f90 | 1 - src/MNH/advection_uvw_cen.f90 | 8 +++++++- src/MNH/modeln.f90 | 3 ++- src/MNH/qlap.f90 | 2 ++ src/MNH/tridz.f90 | 5 ++++- src/MNH/turb_hor_dyn_corr.f90 | 2 ++ 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index fb31df5b4..43e126220 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -328,7 +328,6 @@ CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZR #else CALL CONTRAV_DEVICE (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4,& ODATA_ON_DEVICE=.TRUE.) -!Not necessary: already done in contrav_device !$acc update self(ZRUCT,ZRVCT,ZRWCT) #endif ! #ifndef MNH_OPENACC diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90 index 7db6ad59e..36f4bba0a 100644 --- a/src/MNH/advection_uvw_cen.f90 +++ b/src/MNH/advection_uvw_cen.f90 @@ -128,6 +128,7 @@ USE MODI_CONTRAV #ifndef MNH_OPENACC USE MODI_SHUMAN #else +USE MODI_GET_HALO, ONLY: GET_HALO_D USE MODI_SHUMAN_DEVICE #endif !------------------------------------------------------------------------------- @@ -354,9 +355,9 @@ ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN CALL CONTRAV_DEVICE (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4, & ODATA_ON_DEVICE=.TRUE.) END IF -!Not necessary: already done in contrav_device !$acc update self(ZRUCT,ZRVCT,ZRWCT) #endif ! +#ifndef MNH_OPENACC NULLIFY(TZFIELDS_ll) !!$IF(NHALO == 1) THEN CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRWCT, 'ADVECTION_UVW_CEN::ZRWCT' ) @@ -366,6 +367,11 @@ NULLIFY(TZFIELDS_ll) CALL CLEANLIST_ll(TZFIELDS_ll) !$acc update device(ZRUCT, ZRVCT, ZRWCT) !!$END IF +#else + CALL GET_HALO_D(ZRWCT,HNAME='ADVECTION_UVW_CEN::ZRWCT') + CALL GET_HALO_D(ZRUCT,HNAME='ADVECTION_UVW_CEN::ZRUCT') + CALL GET_HALO_D(ZRVCT,HNAME='ADVECTION_UVW_CEN::ZRVCT') +#endif ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 9c8499e3c..6f7863388 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -2058,7 +2058,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN IF ( NSV /= 0 ) XRSVS_CLD(:, :, :, : ) = XRSVS(:, :, :, : ) - XRSVS_CLD(:, :, :, : ) !$acc end kernels ! -!$acc update host( XRTHS, XRRS, XRSVS, XRTHS_CLD, XRRS_CLD, XRSVS_CLD ) +!$acc update host( XRTHS_CLD, XRRS_CLD, XRSVS_CLD ) ! IF (CCLOUD /= 'REVE' ) THEN XACPRR = XACPRR + XINPRR * XTSTEP @@ -2090,6 +2090,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN ! It is necessary that SV_C2R2 and SV_C1R3 are contiguous in the preceeding CALL ! END IF +!$acc update host( XRTHS, XRRS, XRSVS ) ! CALL SECOND_MNH2(ZTIME2) ! diff --git a/src/MNH/qlap.f90 b/src/MNH/qlap.f90 index 1dad26367..43abc5e9e 100644 --- a/src/MNH/qlap.f90 +++ b/src/MNH/qlap.f90 @@ -313,7 +313,9 @@ IF(.NOT. L2D) THEN ! CALL MPPDB_CHECK3D(ZV,'QLAP::ZV/N',PRECISION) ! ELSE + !$acc kernels ZV(:,:,:) = 0. + !$acc end kernels ENDIF ! IF ( CEQNSYS == 'DUR' .OR. CEQNSYS == 'MAE' ) THEN diff --git a/src/MNH/tridz.f90 b/src/MNH/tridz.f90 index badb66af9..9c7baab1d 100644 --- a/src/MNH/tridz.f90 +++ b/src/MNH/tridz.f90 @@ -846,7 +846,7 @@ IF (.NOT. L2D) THEN & ' AS A PRODUCT OF POWERS OF 2, 3 AND 5.')") !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','TRIDZ','') - END IF + END IF ! ! ! other cases @@ -864,6 +864,9 @@ IF (.NOT. L2D) THEN ! ENDIF ! +ELSE + PTRIGSY(:) = XUNDEF + KIFAXY(:) = NUNDEF ENDIF END IF NOT_ZSOLV diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 7ab54da8e..a0d714a5c 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -692,6 +692,7 @@ CALL GET_HALO_D(ZFLX,HNAME='TURB_HOR_DYN_CORR::ZFLX') #endif ! IF ( tpfile%lopened .AND. OTURB_FLX ) THEN + !$acc update self( ZFLX ) ! stores <U U> TZFIELD%CMNHNAME = 'U_VAR' TZFIELD%CSTDNAME = '' @@ -903,6 +904,7 @@ CALL GET_HALO_D(ZFLX,HNAME='TURB_HOR_DYN_CORR::ZFLX') #endif ! IF ( tpfile%lopened .AND. OTURB_FLX ) THEN + !$acc update self( ZFLX ) ! stores <V V> TZFIELD%CMNHNAME = 'V_VAR' TZFIELD%CSTDNAME = '' -- GitLab