Skip to content
Snippets Groups Projects
Commit 1ac8453d authored by ESCOBAR Juan's avatar ESCOBAR Juan
Browse files

Juan 07/03/2022:ZSOLVER/advection_uvw.f90,Cray Optimisation, replace loop or...

Juan 07/03/2022:ZSOLVER/advection_uvw.f90,Cray Optimisation, replace loop or ARRAY SYNTAX by DO CONCURRENT
parent b85eafc1
No related branches found
No related tags found
No related merge requests found
...@@ -197,6 +197,8 @@ TYPE(LIST_ll), POINTER :: TZFIELDS0_ll ! list of fields to exchange ...@@ -197,6 +197,8 @@ TYPE(LIST_ll), POINTER :: TZFIELDS0_ll ! list of fields to exchange
! !
INTEGER :: IIU,IJU,IKU INTEGER :: IIU,IJU,IKU
! !
INTEGER :: JI,JJ,JK
!
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* 0. INITIALIZATION !* 0. INITIALIZATION
...@@ -273,8 +275,8 @@ CALL MNH_MEM_GET( ZMZM_RHODJ, IIU, IJU, IKU ) ...@@ -273,8 +275,8 @@ CALL MNH_MEM_GET( ZMZM_RHODJ, IIU, IJU, IKU )
#endif #endif
!$acc data present( zrut, zrvt, zrwt, zruct, zrvct, zrwct, zu, zv, zw, & !$acc data present( zrut, zrvt, zrwt, zruct, zrvct, zrwct, zu, zv, zw, &
!$acc & zrus_other, zrvs_other, zrws_other, zrus_adv, zrvs_adv, zrws_adv, & !$acc & zrus_other, zrvs_other, zrws_other, zrus_adv, zrvs_adv, zrws_adv, &
!$acc & zmxm_rhodj, zmym_rhodj, zmzm_rhodj ) !$acc & zmxm_rhodj, zmym_rhodj, zmzm_rhodj )
IKE = SIZE(PWT,3) - JPVEXT IKE = SIZE(PWT,3) - JPVEXT
! !
...@@ -435,24 +437,32 @@ DO JSPL=1,ISPLIT ...@@ -435,24 +437,32 @@ DO JSPL=1,ISPLIT
! Tendencies on wind ! Tendencies on wind
!$acc update device(ZRUS_ADV,ZRVS_ADV,ZRWS_ADV) !$acc update device(ZRUS_ADV,ZRVS_ADV,ZRWS_ADV)
!$acc kernels !$acc kernels
PRUS(:,:,:) = PRUS(:,:,:) + ZRUS_ADV(:,:,:) / ISPLIT #ifdef MNH_COMPILER_NVHPC
PRVS(:,:,:) = PRVS(:,:,:) + ZRVS_ADV(:,:,:) / ISPLIT !$acc loop independent collapse(3)
PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_ADV(:,:,:) / ISPLIT #endif
!$acc end kernels DO CONCURRENT (JI=1:IIU , JJ=1:IJU , JK=1:IKU )
! PRUS(JI,JJ,JK) = PRUS(JI,JJ,JK) + ZRUS_ADV(JI,JJ,JK) / ISPLIT
PRVS(JI,JJ,JK) = PRVS(JI,JJ,JK) + ZRVS_ADV(JI,JJ,JK) / ISPLIT
PRWS(JI,JJ,JK) = PRWS(JI,JJ,JK) + ZRWS_ADV(JI,JJ,JK) / ISPLIT
END DO
IF (JSPL<ISPLIT) THEN IF (JSPL<ISPLIT) THEN
! !
! Guesses for next time splitting loop ! Guesses for next time splitting loop
! !
!$acc kernels !
ZU(:,:,:) = ZU(:,:,:) + ZTSTEP / ZMXM_RHODJ * & #ifdef MNH_COMPILER_NVHPC
(ZRUS_OTHER(:,:,:) + ZRUS_ADV(:,:,:)) !$acc loop independent collapse(3)
ZV(:,:,:) = ZV(:,:,:) + ZTSTEP / ZMYM_RHODJ * & #endif
(ZRVS_OTHER(:,:,:) + ZRVS_ADV(:,:,:)) DO CONCURRENT (JI=1:IIU , JJ=1:IJU , JK=1:IKU )
ZW(:,:,:) = ZW(:,:,:) + ZTSTEP / ZMZM_RHODJ * & ZU(JI,JJ,JK) = ZU(JI,JJ,JK) + ZTSTEP / ZMXM_RHODJ(JI,JJ,JK) * &
(ZRWS_OTHER(:,:,:) + ZRWS_ADV(:,:,:)) (ZRUS_OTHER(JI,JJ,JK) + ZRUS_ADV(JI,JJ,JK))
!$acc end kernels ZV(JI,JJ,JK) = ZV(JI,JJ,JK) + ZTSTEP / ZMYM_RHODJ(JI,JJ,JK) * &
END IF (ZRVS_OTHER(JI,JJ,JK) + ZRVS_ADV(JI,JJ,JK))
ZW(JI,JJ,JK) = ZW(JI,JJ,JK) + ZTSTEP / ZMZM_RHODJ(JI,JJ,JK) * &
(ZRWS_OTHER(JI,JJ,JK) + ZRWS_ADV(JI,JJ,JK))
END DO
END IF
!$acc end kernels
! !
! Top and bottom Boundaries ! Top and bottom Boundaries
! !
......
This diff is collapsed.
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