From 1f62059a7a72aa4ba5658b7b4c386ab051b70dd7 Mon Sep 17 00:00:00 2001 From: Juan Escobar <juan.escobar@aero.obs-mip.fr> Date: Tue, 12 Oct 2021 12:02:26 +0200 Subject: [PATCH] Juan 12/10/2021:mass_leak.f90 , allocate 2D work array at first call for GPU optimization --- src/ZSOLVER/mass_leak.f90 | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/ZSOLVER/mass_leak.f90 b/src/ZSOLVER/mass_leak.f90 index 9ffe52c67..6a6b7206d 100644 --- a/src/ZSOLVER/mass_leak.f90 +++ b/src/ZSOLVER/mass_leak.f90 @@ -132,7 +132,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRVS ! momentum tendencies ! !JUAN16 REAL :: ZLEAK ! total leak of mass -REAL, ALLOCATABLE, DIMENSION (:,:) :: ZLEAK_W_2D , ZLEAK_E_2D , ZLEAK_S_2D , ZLEAK_N_2D +REAL, SAVE , ALLOCATABLE, DIMENSION (:,:) :: ZLEAK_W_2D , ZLEAK_E_2D , ZLEAK_S_2D , ZLEAK_N_2D !JUAN16 REAL :: ZUSTOP ! wind correction! @@ -151,6 +151,7 @@ INTEGER :: IINFO_ll ! return code of parallel routine LOGICAL :: GWEST,GEAST,GSOUTH,GNORTH REAL :: ZLEAK_W,ZLEAK_E,ZLEAK_S,ZLEAK_N ! +LOGICAL , SAVE :: GFIRST_CALL_MASS_LEAK = .TRUE. !------------------------------------------------------------------------------- ! !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES: @@ -177,9 +178,19 @@ ZLEAK_W=0. ZLEAK_S=0. ZLEAK_N=0. ! -IF( HLBCY(1) /= 'CYCL' ) THEN - ALLOCATE( ZLEAK_W_2D(IIB:IIB,IJB:IJE)) - ALLOCATE( ZLEAK_E_2D(IIE+1:IIE+1,IJB:IJE)) +IF (GFIRST_CALL_MASS_LEAK) THEN + GFIRST_CALL_MASS_LEAK = .FALSE. + IF( HLBCX(1) /= 'CYCL' ) THEN + ALLOCATE( ZLEAK_W_2D(IIB:IIB,IJB:IJE)) + ALLOCATE( ZLEAK_E_2D(IIE+1:IIE+1,IJB:IJE)) + END IF + IF( HLBCY(1) /= 'CYCL' ) THEN + ALLOCATE( ZLEAK_S_2D(IIB:IIE,IJB:IJB)) + ALLOCATE( ZLEAK_N_2D(IIB:IIE,IJE+1:IJE+1)) + END IF +END IF +! +IF( HLBCX(1) /= 'CYCL' ) THEN !$acc kernels async ZLEAK_W_2D = 0.0 IF( GWEST ) THEN @@ -209,8 +220,6 @@ IF( HLBCY(1) /= 'CYCL' ) THEN END IF ! IF( HLBCY(1) /= 'CYCL' ) THEN - ALLOCATE( ZLEAK_S_2D(IIB:IIE,IJB:IJB)) - ALLOCATE( ZLEAK_N_2D(IIB:IIE,IJE+1:IJE+1)) ! !$acc kernels async ZLEAK_S_2D = 0.0 @@ -242,10 +251,6 @@ IF( HLBCY(1) /= 'CYCL' ) THEN END IF ! ZLEAK = ZLEAK_E + ZLEAK_W + ZLEAK_S + ZLEAK_N -!!$ZLEAK = ZLEAK_E -!!$ZLEAK = ZLEAK + ZLEAK_W -!!$ZLEAK = ZLEAK + ZLEAK_S -!!$ZLEAK = ZLEAK + ZLEAK_N ! !CALL REDUCESUM_ll(ZLEAK,IINFO_ll) ! we do the reducesum_ll in SUM_DD_R2_ll so we do not do it here ! -- GitLab