From ecd715dc1caaeded1b3e180afe45d5465d2a4b8b Mon Sep 17 00:00:00 2001 From: ESCOBAR Juan <escj@nuwa> Date: Thu, 27 Oct 2022 11:20:17 +0200 Subject: [PATCH] Juan 27/10/2022:turb_hor_thermo_corr.f90, Strange BUG with Nvhpc/22.7+ , turb+I/O do SegFault => convert array syntax adding mnh_expand to eliminate listing reference to zflx$f/zwork$f --- src/MNH/turb_hor_thermo_corr.f90 | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90 index 3c4d48773..93378881d 100644 --- a/src/MNH/turb_hor_thermo_corr.f90 +++ b/src/MNH/turb_hor_thermo_corr.f90 @@ -347,7 +347,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #ifndef MNH_BITREP ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 ) #else - ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) ) +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE(:,:,:)) + BR_P2(ZTMP2_DEVICE(:,:,:)) ) +!$mnh_end_expand_array() #endif !$acc end kernels ELSE @@ -356,7 +358,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #ifndef MNH_BITREP ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2 #else - ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE) +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE(:,:,:)) +!$mnh_end_expand_array() #endif !$acc end kernels END IF @@ -398,6 +402,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & CALL MYF_DEVICE(PDYY(:,:,IKB:IKB), ZTMP2_DEVICE(:,:,1:1)) ! !$acc kernels +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU) ZFLX(:,:,IKB) = XCTV * PLM(:,:,IKB) & * PLEPS(:,:,IKB) * ( & ( ZTMP3_DEVICE(:,:,1) & @@ -414,12 +419,15 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & ) * 0.5 * ( PDZY(:,:,IKB+1)+PDZY(:,:,IKB) ) & / ZTMP2_DEVICE(:,:,1) & ) ** 2 ) +!$mnh_end_expand_array() #endif ! ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB) ! IF ( KRRL > 0 ) THEN +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZWORK(:,:,:) = ZFLX(:,:,:) * PATHETA(:,:,:) * PATHETA(:,:,:) +!$mnh_end_expand_array() END IF !$acc end kernels ! @@ -620,8 +628,10 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB) ! IF ( KRRL > 0 ) THEN +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZWORK(:,:,:) = ZWORK(:,:,:) + & 2. * PATHETA(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:) +!$mnh_end_expand_array() END IF !$acc end kernels ! stores <THl Rnp> @@ -726,7 +736,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #ifndef MNH_BITREP ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 ) #else - ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) ) +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE(:,:,:)) + BR_P2(ZTMP2_DEVICE(:,:,:)) ) +!$mnh_end_expand_array() #endif !$acc end kernels ELSE @@ -735,7 +747,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #ifndef MNH_BITREP ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2 #else - ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE) +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE(:,:,:)) +!$mnh_end_expand_array() #endif !$acc end kernels END IF @@ -776,6 +790,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & CALL MYF_DEVICE(PDYY(:,:,IKB:IKB),ZTMP6_DEVICE(:,:,1:1)) ! !$acc kernels +!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZFLX(:,:,IKB) = XCHV * PLM(:,:,IKB) & * PLEPS(:,:,IKB) * ( & ( ZTMP3_DEVICE(:,:,1) & @@ -792,12 +807,15 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & ) * 0.5 * ( PDZY(:,:,IKB+1)+PDZY(:,:,IKB) ) & / ZTMP6_DEVICE(:,:,1) & ) ** 2 ) +!$mnh_end_expand_array() #endif ! ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB) ! IF ( KRRL > 0 ) THEN + !$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZWORK(:,:,:) = ZWORK(:,:,:)+ PAMOIST(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:) + !$mnh_end_expand_array() END IF !$acc end kernels ! stores <Rnp Rnp> -- GitLab