Skip to content

Commit

Permalink
Promote wwE and wwI to "i1" variables for performance
Browse files Browse the repository at this point in the history
The memory-sized local variable wwE and wwI were allocated on the stack
for rk_tendency, and for each of the multiple calls to rk_scalar_tend.
These are each called for every RK time step. The mods allocate the space
in the solver once per model time step, and since the variables are "i1",
they are not kept during a nested domain.

 Changes to be committed:
	modified:   Registry/Registry.EM_COMMON
	modified:   dyn_em/module_em.F
	modified:   dyn_em/solve_em.F
  • Loading branch information
davegill committed Mar 22, 2021
1 parent 35570d0 commit cc3c08d
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
2 changes: 2 additions & 0 deletions Registry/Registry.EM_COMMON
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ state real w ikjb dyn_em 2 Z \
state real ww ikj dyn_em 1 Z r "ww" "mu-coupled eta-dot" "Pa s-1"
state real rw ikj dyn_em 1 Z - "rw" "mu-coupled w" "Pa m s-1"
i1 real ww1 ikj dyn_em 1 Z
i1 real wwE ikj dyn_em 1 Z - "wwE" "Explicit vertical velocity" "Pa s-1"
i1 real wwI ikj dyn_em 1 Z - "wwI" "Implicit vertical velocity" "Pa s-1"
state real ww_m ikj dyn_em 1 Z r "ww_m" "time-avg mu-coupled eta-dot" "Pa s-1"
i1 real wwp ikj dyn_em 1 Z
i1 real rw_tend ikj dyn_em 1 Z
Expand Down
4 changes: 2 additions & 2 deletions dyn_em/module_em.F
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ SUBROUTINE rk_tendency ( config_flags, rk_step, &
ru_tendf, rv_tendf, rw_tendf, ph_tendf, t_tendf, &
mu_tend, u_save, v_save, w_save, ph_save, &
t_save, mu_save, RTHFTEN, &
ru, rv, rw, ww, &
ru, rv, rw, ww, wwE, wwI, &
u, v, w, t, ph, &
u_old, v_old, w_old, t_old, ph_old, &
h_diabatic, phb,t_init, &
Expand Down Expand Up @@ -1096,7 +1096,7 @@ END SUBROUTINE rk_addtend_dry
SUBROUTINE rk_scalar_tend ( scs, sce, config_flags, &
tenddec, &
rk_step, dt_step, &
ru, rv, ww, &
ru, rv, ww, wwE, wwI, &
u_old, v_old, &
mut, mub, mu_old, &
c1h, c2h, c1f, c2f, alt, &
Expand Down
14 changes: 7 additions & 7 deletions dyn_em/solve_em.F
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ SUBROUTINE solve_em ( grid , config_flags &
f_flux = config_flags%do_avgflx_cugd .EQ. 1

! Compute these starting and stopping locations for each tile and number of tiles.
! See: http://www.mmm.ucar.edu/wrf/WG2/topics/settiles
! See: https://www2.mmm.ucar.edu/wrf/WG2/topics/settiles
CALL set_tiles ( ZONE_SOLVE_EM, grid , ids , ide , jds , jde , ips , ipe , jps , jpe )
! CALL set_tiles ( grid , ids , ide , jds , jde , ips , ipe , jps , jpe )

Expand Down Expand Up @@ -806,7 +806,7 @@ SUBROUTINE solve_em ( grid , config_flags &
,ru_tendf, rv_tendf, rw_tendf, ph_tendf, t_tendf &
,mu_tend, grid%u_save, grid%v_save, w_save, ph_save &
,grid%t_save, mu_save, grid%rthften &
,grid%ru, grid%rv, grid%rw, grid%ww &
,grid%ru, grid%rv, grid%rw, grid%ww, wwE, wwI &
,grid%u_2, grid%v_2, grid%w_2, grid%t_2, grid%ph_2 &
,grid%u_1, grid%v_1, grid%w_1, grid%t_1, grid%ph_1 &
,grid%h_diabatic, grid%phb, grid%t_init &
Expand Down Expand Up @@ -2137,7 +2137,7 @@ SUBROUTINE solve_em ( grid , config_flags &
BENCH_START(rk_scalar_tend_tim)
CALL rk_scalar_tend ( im, im, config_flags, tenddec, &
rk_step, dt_rk, &
grid%ru_m, grid%rv_m, grid%ww_m, &
grid%ru_m, grid%rv_m, grid%ww_m, wwE, wwI, &
grid%u_1, grid%v_1, &
grid%muts, grid%mub, grid%mu_1, &
grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
Expand Down Expand Up @@ -2306,7 +2306,7 @@ SUBROUTINE solve_em ( grid , config_flags &
tenddec = .false.
CALL rk_scalar_tend ( 1, 1, config_flags, tenddec, &
rk_step, dt_rk, &
grid%ru_m, grid%rv_m, grid%ww_m, &
grid%ru_m, grid%rv_m, grid%ww_m, wwE, wwI, &
grid%u_1, grid%v_1, &
grid%muts, grid%mub, grid%mu_1, &
grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
Expand Down Expand Up @@ -2399,7 +2399,7 @@ SUBROUTINE solve_em ( grid , config_flags &
( adv_ct_indices(ic) >= PARAM_FIRST_SCALAR ))
CALL rk_scalar_tend ( ic, ic, config_flags, tenddec, &
rk_step, dt_rk, &
grid%ru_m, grid%rv_m, grid%ww_m, &
grid%ru_m, grid%rv_m, grid%ww_m, wwE, wwI, &
grid%u_1, grid%v_1, &
grid%muts, grid%mub, grid%mu_1, &
grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
Expand Down Expand Up @@ -2561,7 +2561,7 @@ SUBROUTINE solve_em ( grid , config_flags &
tenddec = .false.
CALL rk_scalar_tend ( ic, ic, config_flags, tenddec, &
rk_step, dt_rk, &
grid%ru_m, grid%rv_m, grid%ww_m, &
grid%ru_m, grid%rv_m, grid%ww_m, wwE, wwI, &
grid%u_1, grid%v_1, &
grid%muts, grid%mub, grid%mu_1, &
grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
Expand Down Expand Up @@ -2703,7 +2703,7 @@ SUBROUTINE solve_em ( grid , config_flags &
tenddec = .false.
CALL rk_scalar_tend ( is, is, config_flags, tenddec, &
rk_step, dt_rk, &
grid%ru_m, grid%rv_m, grid%ww_m, &
grid%ru_m, grid%rv_m, grid%ww_m, wwE, wwI, &
grid%u_1, grid%v_1, &
grid%muts, grid%mub, grid%mu_1, &
grid%c1h, grid%c2h, grid%c1f, grid%c2f, &
Expand Down

0 comments on commit cc3c08d

Please sign in to comment.