From b6e436c4c3d2b1cf687c28b5f897e3dcd5816cfb Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 25 Mar 2022 18:40:30 +0100 Subject: [PATCH] Juan 25/03/2022:ZSOLVER/turb.f90, Cray GPU opt: add !dir$ concurrent & transform array-syntax -> do concurrent --- src/ZSOLVER/turb.f90 | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index f60bd4d1b..5042cd5a9 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -776,6 +776,7 @@ IF (KRRL >=1) THEN #else !$acc kernels #endif + !dir$ concurrent ZT(:,:,:) = PTHLT(:,:,:) * ZEXN(:,:,:) !$acc end kernels ! @@ -862,23 +863,26 @@ END IF ! loop end on KRRL >= 1 IF ( KRRL >= 1 ) THEN !$acc kernels IF ( KRRI >= 1 ) THEN - ! Rnp at t - PRT(:,:,:,1) = PRT(:,:,:,1) + PRT(:,:,:,2) + PRT(:,:,:,4) - PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + PRRS(:,:,:,4) - ! Theta_l at t - PTHLT(:,:,:) = PTHLT(:,:,:) - ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) & - - ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4) - PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) & - - ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4) - ELSE - ! Rnp at t - PRT(:,:,:,1) = PRT(:,:,:,1) + PRT(:,:,:,2) - PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) - ! Theta_l at t - PTHLT(:,:,:) = PTHLT(:,:,:) - ZLOCPEXNM(:,:,:) * PRT(:,:,:,2) - !dir$ concurrent - PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2) - END IF + DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ! Rnp at t + PRT(JI,JJ,JK,1) = PRT(JI,JJ,JK,1) + PRT(JI,JJ,JK,2) + PRT(JI,JJ,JK,4) + PRRS(JI,JJ,JK,1) = PRRS(JI,JJ,JK,1) + PRRS(JI,JJ,JK,2) + PRRS(JI,JJ,JK,4) + ! Theta_l at t + PTHLT(JI,JJ,JK) = PTHLT(JI,JJ,JK) - ZLVOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,2) & + - ZLSOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,4) + PRTHLS(JI,JJ,JK) = PRTHLS(JI,JJ,JK) - ZLVOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,2) & + - ZLSOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,4) + ENDDO + ELSE + DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ! Rnp at t + PRT(JI,JJ,JK,1) = PRT(JI,JJ,JK,1) + PRT(JI,JJ,JK,2) + PRRS(JI,JJ,JK,1) = PRRS(JI,JJ,JK,1) + PRRS(JI,JJ,JK,2) + ! Theta_l at t + PTHLT(JI,JJ,JK) = PTHLT(JI,JJ,JK) - ZLOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,2) + PRTHLS(JI,JJ,JK) = PRTHLS(JI,JJ,JK) - ZLOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,2) + ENDDO + END IF !$acc end kernels END IF ! -- GitLab