Skip to content
Snippets Groups Projects
Commit 7530ac40 authored by ESCOBAR MUNOZ Juan's avatar ESCOBAR MUNOZ Juan
Browse files

Juan 19/08/2024:MNH/*, For Cray compiler & managed memory add present_crm , to...

Juan 19/08/2024:MNH/*, For Cray compiler & managed memory add present_crm , to bypass PB  "data not present"
parent 7cfdf7dc
No related branches found
No related tags found
No related merge requests found
......@@ -209,7 +209,7 @@ INTEGER :: JIU,JJU,JKU
INTEGER :: JI,JJ,JK
!----------------------------------------------------------------------------
!$acc data present( PA, PDXX, PDZZ, PDZX, PGX_U_M_DEVICE )
!$acc data present_crm( PA, PDXX, PDZZ, PDZX, PGX_U_M_DEVICE )
JIU = size(pa, 1 )
JJU = size(pa, 2 )
......@@ -222,7 +222,7 @@ CALL MNH_MEM_GET( ztmp1_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp2_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp3_device, JIU, JJU, JKU )
!$acc data present( ztmp1_device, ztmp2_device, ztmp3_device )
!$acc data present_crm( ztmp1_device, ztmp2_device, ztmp3_device )
!
!* 1. DEFINITION of GX_U_M_DEVICE
......@@ -400,7 +400,7 @@ INTEGER :: JI,JJ,JK
!
!----------------------------------------------------------------------------
!$acc data present( PA, PDYY, PDZZ, PDZY, PGY_U_UV_DEVICE )
!$acc data present_crm( PA, PDYY, PDZZ, PDZY, PGY_U_UV_DEVICE )
JIU = size(pa, 1 )
JJU = size(pa, 2 )
......@@ -413,7 +413,7 @@ CALL MNH_MEM_GET( ztmp1_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp2_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp3_device, JIU, JJU, JKU )
!$acc data present( ztmp1_device, ztmp2_device, ztmp3_device )
!$acc data present_crm( ztmp1_device, ztmp2_device, ztmp3_device )
!
!* 1. DEFINITION of GY_U_UV_DEVICE
......
......@@ -226,7 +226,7 @@ INTEGER :: JI,JJ,JK
!
!----------------------------------------------------------------------------
!$acc data present( PA, PDYY, PDZZ, PDZY, PGY_V_M_DEVICE )
!$acc data present_crm( PA, PDYY, PDZZ, PDZY, PGY_V_M_DEVICE )
JIU = size(pa, 1 )
JJU = size(pa, 2 )
......@@ -239,7 +239,7 @@ CALL MNH_MEM_GET( ztmp1_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp2_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp3_device, JIU, JJU, JKU )
!$acc data present( ztmp1_device, ztmp2_device, ztmp3_device )
!$acc data present_crm( ztmp1_device, ztmp2_device, ztmp3_device )
!
!* 1. DEFINITION of GY_V_M_DEVICE
......@@ -415,7 +415,7 @@ INTEGER :: JI,JJ,JK
!
!----------------------------------------------------------------------------
!$acc data present( PA, PDXX, PDZZ, PDZX, PGX_V_UV_DEVICE )
!$acc data present_crm( PA, PDXX, PDZZ, PDZX, PGX_V_UV_DEVICE )
JIU = size(pa, 1 )
JJU = size(pa, 2 )
......@@ -429,7 +429,7 @@ CALL MNH_MEM_GET( ztmp2_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp3_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp4_device, JIU, JJU, JKU )
!$acc data present( ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device )
!$acc data present_crm( ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device )
!
!* 1. DEFINITION of GX_V_UV_DEVICE
......@@ -592,7 +592,7 @@ REAL, DIMENSION(:,:,:), pointer , contiguous :: ZTMP1_DEVICE, ZTMP2_DEVICE
INTEGER :: JIU,JJU,JKU
!----------------------------------------------------------------------------
!$acc data present( PA, PDZZ, PGZ_V_VW_DEVICE )
!$acc data present_crm( PA, PDZZ, PGZ_V_VW_DEVICE )
JIU = size(pa, 1 )
JJU = size(pa, 2 )
......@@ -604,7 +604,7 @@ CALL MNH_MEM_POSITION_PIN( 'GZ_V_VW' )
CALL MNH_MEM_GET( ztmp1_device, JIU, JJU, JKU )
CALL MNH_MEM_GET( ztmp2_device, JIU, JJU, JKU )
!$acc data present( ztmp1_device, ztmp2_device )
!$acc data present_crm( ztmp1_device, ztmp2_device )
!
!* 1. DEFINITION of GZ_V_VW_DEVICE
......
......@@ -150,7 +150,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMXF )
!$acc data present_crm( PA, PMXF )
!
!* 1. DEFINITION OF MXF
! ------------------
......@@ -160,7 +160,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PMXF,PA)
!$acc kernels present_crm(PMXF,PA)
!$acc loop independent collapse(3)
DO JK = 1, IKU
DO JJ = 1, IJU
......@@ -176,7 +176,7 @@ PMXF(IIU,:,:) = PMXF(2*JPHEXT,:,:)
JIJKOR = 1 + 1
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PMXF,PA)
!$acc kernels present_crm(PMXF,PA)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -276,7 +276,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMXM )
!$acc data present_crm( PA, PMXM )
!
!* 1. DEFINITION OF MXM
! ------------------
......@@ -286,7 +286,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PMXM)
!$acc kernels present_crm(PA,PMXM)
!$acc loop independent collapse(3)
DO JK = 1, IKU
DO JJ = 1, IJU
......@@ -309,7 +309,7 @@ JIJKEND = IIU*IJU*IKU
!
!CDIR NODEP
!OCL NOVREC
!$acc kernels present(PA,PMXM)
!$acc kernels present_crm(PA,PMXM)
DO JIJK=JIJKOR , JIJKEND
PMXM(JIJK,1,1) = 0.5*( PA(JIJK,1,1)+PA(JIJK-1,1,1) )
END DO
......@@ -404,7 +404,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMYF )
!$acc data present_crm( PA, PMYF )
!
!* 1. DEFINITION OF MYF
! ------------------
......@@ -413,7 +413,7 @@ IIU = SIZE(PA,1)
IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
!$acc kernels present_cr(PA,PMYF)
!$acc kernels present_crm(PA,PMYF)
#ifndef _OPT_LINEARIZED_LOOPS
!TODO: remplacer le 1 par JPHEXT ?
!$mnh_do_concurrent(JI=1:IIU,JJ=1:IJU-1,JK=1:IKU)
......@@ -517,7 +517,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMYM )
!$acc data present_crm( PA, PMYM )
!
!* 1. DEFINITION OF MYM
! ------------------
......@@ -527,7 +527,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present_cr(PA,PMYM)
!$acc kernels present_crm(PA,PMYM)
!TODO: remplacer le 1+1 par 1+JPHEXT ?
!$mnh_do_concurrent(JI=1:IIU,JJ=2:IJU,JK=1:IKU)
PMYM(JI,JJ,JK) = 0.5*( PA(JI,JJ,JK)+PA(JI,JJ-1,JK) )
......@@ -537,7 +537,7 @@ JIJKOR = 1 + IIU
JIJKEND = IIU*IJU*IKU
!CDIR NODEP
!OCL NOVREC
!$acc kernels present(PA,PMYM)
!$acc kernels present_crm(PA,PMYM)
DO JIJK=JIJKOR , JIJKEND
PMYM(JIJK,1,1) = 0.5*( PA(JIJK,1,1)+PA(JIJK-IIU,1,1) )
END DO
......@@ -621,7 +621,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMZF )
!$acc data present_crm( PA, PMZF )
!
!* 1. DEFINITION OF MZF
! ------------------
......@@ -631,7 +631,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PMZF)
!$acc kernels present_crm(PA,PMZF)
PMZF(:,:,1:IKU-1) = 0.5*( PA(:,:,1:IKU-1)+PA(:,:,2:) )
!
PMZF(:,:,IKU) = -999.
......@@ -640,7 +640,7 @@ PMZF(:,:,IKU) = -999.
JIJKOR = 1 + IIU*IJU
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PMZF)
!$acc kernels present_crm(PA,PMZF)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -728,7 +728,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PMZM )
!$acc data present_crm( PA, PMZM )
!
!* 1. DEFINITION OF MZM
! ------------------
......@@ -736,7 +736,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#ifndef _OPT_LINEARIZED_LOOPS
IKU = SIZE(PA,3)
!
!$acc kernels present(PA,PMZM)
!$acc kernels present_crm(PA,PMZM)
DO JK=2,IKU !TODO: remplacer le 2 par JPHEXT+1 ?
PMZM(:,:,JK) = 0.5* ( PA(:,:,JK) + PA(:,:,JK-1) )
END DO
......@@ -751,7 +751,7 @@ IKU = SIZE(PA,3)
JIJKOR = 1 + IIU*IJU
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PMZM)
!$acc kernels present_crm(PA,PMZM)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -848,7 +848,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
!
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDXF )
!$acc data present_crm( PA, PDXF )
!
!* 1. DEFINITION OF DXF
! ------------------
......@@ -858,7 +858,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PDXF)
!$acc kernels present_crm(PA,PDXF)
!$acc loop independent collapse(3)
DO JK=1,IKU
DO JJ=1,IJU
......@@ -879,7 +879,7 @@ ENDDO
JIJKOR = 1 + 1
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PDXF)
!$acc kernels present_crm(PA,PDXF)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -974,7 +974,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDXM )
!$acc data present_crm( PA, PDXM )
!
!* 1. DEFINITION OF DXM
! ------------------
......@@ -984,7 +984,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PDXM)
!$acc kernels present_crm(PA,PDXM)
!$acc loop independent collapse(3)
DO JK=1,IKU
DO JJ=1,IJU
......@@ -1005,7 +1005,7 @@ ENDDO
JIJKOR = 1 + 1
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PDXM)
!$acc kernels present_crm(PA,PDXM)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -1101,7 +1101,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDYF )
!$acc data present_crm( PA, PDYF )
!
!* 1. DEFINITION OF DYF
! ------------------
......@@ -1110,7 +1110,7 @@ IIU = SIZE(PA,1)
IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
!$acc kernels present_cr(PA,PDYF)
!$acc kernels present_crm(PA,PDYF)
#ifndef _OPT_LINEARIZED_LOOPS
!TODO: remplacer le 1 par JPHEXT ?
!$mnh_do_concurrent(JI=1:IIU,JJ=1:IJU-1,JK=1:IKU)
......@@ -1214,7 +1214,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDYM )
!$acc data present_crm( PA, PDYM )
!
!* 1. DEFINITION OF DYM
! ------------------
......@@ -1224,7 +1224,7 @@ IJU=SIZE(PA,2)
IKU=SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PDYM)
!$acc kernels present_crm(PA,PDYM)
!$acc loop independent collapse(3)
DO JK=1,IKU
DO JJ=2,IJU !TODO: remplacer le 2 par JPHEXT+1 ?
......@@ -1238,7 +1238,7 @@ END DO
JIJKOR = 1 + IIU
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PDYM)
!$acc kernels present_crm(PA,PDYM)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -1323,7 +1323,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDZF )
!$acc data present_crm( PA, PDZF )
!
!* 1. DEFINITION OF DZF
! ------------------
......@@ -1333,7 +1333,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PDZF)
!$acc kernels present_crm(PA,PDZF)
!$acc loop independent collapse(3)
DO JK=1,IKU-1 !TODO: remplacer le 1 par JPHEXT ?
DO JJ=1,IJU
......@@ -1349,7 +1349,7 @@ PDZF(:,:,IKU) = -999.
JIJKOR = 1 + IIU*IJU
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PDZF)
!$acc kernels present_crm(PA,PDZF)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......@@ -1436,7 +1436,7 @@ INTEGER :: JIJK,JIJKOR,JIJKEND
#endif
!
!-------------------------------------------------------------------------------
!$acc data present( PA, PDZM )
!$acc data present_crm( PA, PDZM )
!
!* 1. DEFINITION OF DZM
! ------------------
......@@ -1446,7 +1446,7 @@ IJU = SIZE(PA,2)
IKU = SIZE(PA,3)
!
#ifndef _OPT_LINEARIZED_LOOPS
!$acc kernels present(PA,PDZM)
!$acc kernels present_crm(PA,PDZM)
!$acc loop independent collapse(3)
DO JK=2,IKU !TODO: remplacer le 1+1 par 1+JPHEXT ?
DO JJ=1,IJU
......@@ -1462,7 +1462,7 @@ PDZM(:,:,1) = -999.
JIJKOR = 1 + IIU*IJU
JIJKEND = IIU*IJU*IKU
!
!$acc kernels present(PA,PDZM)
!$acc kernels present_crm(PA,PDZM)
!CDIR NODEP
!OCL NOVREC
DO JIJK=JIJKOR , JIJKEND
......
......@@ -275,10 +275,9 @@ zexn(:, :, :) = ( ppabst(:, :, :) / xp00 ) ** (xrd / xcpd )
!$acc end kernels
#else
!$acc kernels
!$acc loop independent collapse(3)
DO CONCURRENT(jk=1:jku, jj=1:jju, ji=1:jiu )
zexn(ji,jj,jk) = Br_pow( ppabst(ji,jj,jk) / xp00, xrd / xcpd )
ENDDO
!$mnh_expand_array(ji=1:jiu,jj=1:jju,jk=1:jku)
zexn(:,:,:) = Br_pow( ppabst(:,:,:) / xp00, xrd / xcpd )
!$mnh_end_expand_array()
!$acc end kernels
#endif
!$acc kernels present_cr(zexn,zt,zlv)
......@@ -427,7 +426,7 @@ CLOUD: select case ( hcloud )
case( 'LIMA' )
! Correction where rc<0 or Nc<0
if ( krr.GE.2 ) then
!$acc kernels present_cr(zexn,zcph,zlv)
!$acc kernels present_cr(zexn,zcph,zlv,zmask)
zmask(:,:,:)=(prrs(:, :, :, 2) < xrtmin_lima(2) / ptstep)
if (nsv_lima_nc.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_nc) < xctmin_lima(2) / ptstep )
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......@@ -457,7 +456,7 @@ CLOUD: select case ( hcloud )
end if
! Correction where rr<0 or Nr<0
if ( krr.GE.3 .and. hbudname.ne.'NETUR' ) then
!$acc kernels present_cr(zexn,zcph,zlv)
!$acc kernels present_cr(zexn,zcph,zlv,zmask)
zmask(:,:,:)=(prrs(:, :, :, 3) < xrtmin_lima(3) / ptstep)
if (nsv_lima_nr.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_nr) < xctmin_lima(3) / ptstep )
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......@@ -479,7 +478,7 @@ CLOUD: select case ( hcloud )
end if
! Correction where ri<0 or Ni<0
if ( krr.GE.4 ) then
!$acc kernels present_cr(zexn,zcph,zls)
!$acc kernels present_cr(zexn,zcph,zls,zmask)
zmask(:,:,:)=(prrs(:, :, :, 4) < xrtmin_lima(4) / ptstep)
if (nsv_lima_ni.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_ni) < xctmin_lima(4) / ptstep)
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......@@ -511,7 +510,7 @@ CLOUD: select case ( hcloud )
! Snow
if ( krr.GE.5 .and. hbudname.ne.'NETUR' ) then
!$acc kernels present_cr(zexn,zcph,zls)
!$acc kernels present_cr(zexn,zcph,zls,zmask)
zmask(:,:,:)=(prrs(:, :, :, 5) < xrtmin_lima(5) / ptstep)
if (nsv_lima_ns.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_ns) < xctmin_lima(5) / ptstep )
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......@@ -533,7 +532,7 @@ CLOUD: select case ( hcloud )
end if
! Graupel
if ( krr.GE.6 .and. hbudname.ne.'NETUR' ) then
!$acc kernels present_cr(zcor,zexn,zcph,zls)
!$acc kernels present_cr(zcor,zexn,zcph,zls,zmask)
zmask(:,:,:)=(prrs(:, :, :, 6) < xrtmin_lima(6) / ptstep)
if (nsv_lima_ng.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_ng) < xctmin_lima(6) / ptstep )
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......@@ -555,7 +554,7 @@ CLOUD: select case ( hcloud )
end if
! Hail
if ( krr.GE.7 .and. hbudname.ne.'NETUR' ) then
!$acc kernels present_cr(zcor,zexn,zcph,zls)
!$acc kernels present_cr(zcor,zexn,zcph,zls,zmask)
zmask(:,:,:)=(prrs(:, :, :, 7) < xrtmin_lima(7) / ptstep)
if (nsv_lima_nh.gt.0) zmask(:,:,:)=(zmask(:,:,:) .or. prsvs(:, :, :, nsv_lima_nh) < xctmin_lima(7) / ptstep )
!$mnh_expand_where(ji = 1 : jiu, jj = 1 : jju, jk = 1 : jku)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment