From 2df57d352cfa9bb9f9be69701133967c58d6fac7 Mon Sep 17 00:00:00 2001 From: Wautelet Philippe <waup@aeropc45.aero.obs-mip.fr> Date: Tue, 12 Oct 2021 15:34:32 +0200 Subject: [PATCH] Philippe 12/10/2021: add dimensions (:,:,:) for better compiler optimisation and readability --- src/MNH/advecuvw_rk.f90 | 6 +-- src/MNH/advecuvw_weno_k.f90 | 87 ++++++++++++++++++------------------- src/MNH/turb.f90 | 14 +++--- 3 files changed, 52 insertions(+), 55 deletions(-) diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90 index 20bc33af5..529e14d21 100644 --- a/src/MNH/advecuvw_rk.f90 +++ b/src/MNH/advecuvw_rk.f90 @@ -584,9 +584,9 @@ RKLOOP: DO JS = 1, ISPL !$acc & present(ZRUS,ZRVS,ZRWS,ZIBM) present(PRUS_OTHER,PRVS_OTHER,PRWS_OTHER) & !$acc & present(PMXM_RHODJ,PMYM_RHODJ,PMZM_RHODJ) ! - ZUT = PU - ZVT = PV - ZWT = PW + ZUT(:,:,:) = PU(:,:,:) + ZVT(:,:,:) = PV(:,:,:) + ZWT(:,:,:) = PW(:,:,:) ! DO JI = 1, JS ! diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90 index f328d2e35..f86a88619 100644 --- a/src/MNH/advecuvw_weno_k.f90 +++ b/src/MNH/advecuvw_weno_k.f90 @@ -71,30 +71,27 @@ END MODULE MODI_ADVECUVW_WENO_K !* 0. DECLARATIONS ! ------------ ! -USE MODE_ll -! -USE MODD_PARAMETERS -USE MODD_CONF USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -! -#ifndef MNH_OPENACC -USE MODI_SHUMAN -#else -USE MODI_SHUMAN_DEVICE +USE MODD_CONF, ONLY : L2D, NHALO +USE MODD_PARAMETERS + +USE MODE_ll +#ifdef MNH_OPENACC +USE MODE_DEVICE +USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D #endif +USE MODE_MPPDB + USE MODI_ADVEC_WENO_K_1_AUX USE MODI_ADVEC_WENO_K_2_AUX USE MODI_ADVEC_WENO_K_3_AUX -! -USE MODD_CONF, ONLY : NHALO -USE MODE_MPPDB USE MODI_GET_HALO -! -#ifdef MNH_OPENACC -USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D +#ifndef MNH_OPENACC +USE MODI_SHUMAN +#else +USE MODI_SHUMAN_DEVICE #endif -! + IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -212,7 +209,7 @@ CASE(1) ! WENO 1 CALL UP_UX_DEVICE(PUT,ZWORK,ZMEAN) CALL DXM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRUS = PRUS - DYF(UP_MY(PUT,MXM(PRVCT))) @@ -220,7 +217,7 @@ CASE(1) ! WENO 1 CALL UP_MY_DEVICE(PUT,ZWORK,ZMEAN) CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT))) @@ -228,7 +225,7 @@ CASE(1) ! WENO 1 CALL UP_MZ_DEVICE(PUT,ZWORK,ZMEAN) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! ! V component @@ -238,7 +235,7 @@ CASE(1) ! WENO 1 CALL UP_MX_DEVICE(PVT,ZWORK,ZMEAN) CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRVS = PRVS - DYM(UP_VY(PVT,MYF(PRVCT))) @@ -246,7 +243,7 @@ CASE(1) ! WENO 1 CALL UP_VY_DEVICE(PVT,ZWORK,ZMEAN) CALL DYM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT))) @@ -254,7 +251,7 @@ CASE(1) ! WENO 1 CALL UP_MZ_DEVICE(PVT,ZWORK,ZMEAN) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! ! W component @@ -264,7 +261,7 @@ CASE(1) ! WENO 1 CALL UP_MX_DEVICE(PWT,ZWORK,ZMEAN) CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRWS = PRWS - DYF(UP_MY(PWT,MZM(1,IKU,1,PRVCT))) @@ -272,7 +269,7 @@ CASE(1) ! WENO 1 CALL UP_MY_DEVICE(PWT,ZWORK,ZMEAN) CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! !PRWS = PRWS - DZM(1,IKU,1,UP_WZ(PWT,MZF(1,IKU,1,PRWCT))) @@ -280,7 +277,7 @@ CASE(1) ! WENO 1 CALL UP_WZ_DEVICE(PWT,ZWORK,ZMEAN) CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels #endif ! @@ -342,7 +339,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DXM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! IF (.NOT.L2D) THEN @@ -353,7 +350,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -365,7 +362,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! ! V component @@ -378,7 +375,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! CALL MYF_DEVICE(PRVCT,ZWORK) @@ -388,7 +385,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DYM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! ! PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT))) @@ -399,7 +396,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -413,7 +410,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! IF (.NOT.L2D) THEN @@ -425,7 +422,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -437,7 +434,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! CALL MNH_REL_ZT3D(IZFPOS1,IZFPOS2,IZFNEG1,IZFNEG2,IZBPOS1,IZBPOS2,IZBNEG1,IZBNEG2,IZOMP1,IZOMP2,IZOMN1,IZOMN2) @@ -519,9 +516,9 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DXM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels -! +! IF (.NOT.L2D) THEN CALL MXM_DEVICE(PRVCT,ZWORK) CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN, & @@ -534,7 +531,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -549,7 +546,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRUS = PRUS - ZWORK + PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! ! V component @@ -566,7 +563,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! CALL MYF_DEVICE(PRVCT,ZWORK) @@ -580,7 +577,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DYM_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! CALL MYM_DEVICE(PRWCT,ZWORK) @@ -594,7 +591,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRVS = PRVS - ZWORK + PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -611,7 +608,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DXF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! IF (.NOT.L2D) THEN @@ -626,7 +623,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO CALL DYF_DEVICE(ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels END IF ! @@ -641,7 +638,7 @@ CASE(5) ! WENO 5 CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK) !$acc kernels - PRWS = PRWS - ZWORK + PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:) !$acc end kernels ! CALL MNH_REL_ZT3D(IZFPOS1,IZFPOS2,IZFPOS3,IZFNEG1,IZFNEG2,IZFNEG3,IZBPOS1, & diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index d431deaed..1def8bc58 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -993,18 +993,18 @@ IF (ORMC01) THEN call Print_msg( NVERB_FATAL, 'GEN', 'TURB', 'OpenACC: ORMC01 not yet implemented' ) #endif #ifndef MNH_BITREP - ZUSTAR=(PSFU**2+PSFV**2)**(0.25) + ZUSTAR(:,:) = (PSFU(:,:)**2+PSFV(:,:)**2)**(0.25) #else - ZUSTAR=BR_POW(BR_P2(PSFU)+BR_P2(PSFV),0.25) + ZUSTAR(:,:) = BR_POW( BR_P2( PSFU(:,:) ) + BR_P2( PSFV(:,:) ), 0.25 ) #endif IF (KRR>0) THEN - ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV) + ZLMO(:,:) = LMO( ZUSTAR(:,:), ZTHLM(:,:,IKB), ZRM(:,:,IKB,1), PSFTH(:,:), PSFRV(:,:) ) ELSE - ZRVM=0. - ZSFRV=0. - ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV) + ZRVM (:,:) = 0. + ZSFRV(:,:) = 0. + ZLMO(:,:) = LMO( ZUSTAR(:,:), ZTHLM(:,:,IKB), ZRVM(:,:), PSFTH(:,:), ZSFRV(:,:) ) END IF - CALL RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,ZLMO,PLEM,ZLEPS) + CALL RMC01( HTURBLEN, KKA, KKU, KKL, PZZ, PDXX, PDYY, PDZZ, PDIRCOSZW, PSBL_DEPTH, ZLMO, PLEM, ZLEPS ) !$acc update device(PLEM,ZLEPS) END IF ! -- GitLab