<p><b>dwj07@fsu.edu</b> 2011-11-21 15:56:15 -0700 (Mon, 21 Nov 2011)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Adding timers for split explicit time integrator.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/performance/namelist.input.ocean
===================================================================
--- branches/ocean_projects/performance/namelist.input.ocean        2011-11-18 22:49:06 UTC (rev 1204)
+++ branches/ocean_projects/performance/namelist.input.ocean        2011-11-21 22:56:15 UTC (rev 1205)
@@ -31,9 +31,6 @@
config_n_btr_cor_iter = 2
config_u_correction = .true.
config_filter_btr_mode = .false.
- config_btr_mom_decay = .false.
- config_btr_mom_decay_time = 3600.0
- config_btr_mom_eddy_visc2 = 0.0
config_btr_subcycle_loop_factor = 2
config_SSH_from = 'avg_flux'
config_new_btr_variables_from = 'btr_avg'
Modified: branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F        2011-11-18 22:49:06 UTC (rev 1204)
+++ branches/ocean_projects/performance/src/core_ocean/mpas_ocn_time_integration_split.F        2011-11-21 22:56:15 UTC (rev 1205)
@@ -47,6 +47,10 @@
public :: ocn_time_integrator_split
+ type (timer_node), pointer :: timer_main, timer_prep, timer_bcl_vel, timer_btr_vel, timer_diagnostic_update, timer_implicit_vmix, &
+ timer_halo_diagnostic, timer_halo_ubtr, timer_halo_ssh, timer_halo_f, timer_halo_h, &
+ timer_halo_tracers, timer_halo_ubcl
+
contains
!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@@ -99,13 +103,14 @@
real (kind=RKIND), dimension(:), allocatable:: A,C,uTemp, hNew
real (kind=RKIND), dimension(:,:), allocatable:: tracersTemp
- call mpas_timer_start("split_explicit_timestep")
+ call mpas_timer_start("se timestep", .false., timer_main)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Prep variables before first iteration
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ call mpas_timer_start("se prep", .false., timer_prep)
block => domain % blocklist
do while (associated(block))
@@ -146,7 +151,7 @@
block => block % next
end do
-
+ call mpas_timer_stop("se prep", timer_prep)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! BEGIN large iteration loop
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -157,6 +162,7 @@
do split_explicit_step = 1, config_n_ts_iter
! --- update halos for diagnostic variables
+ call mpas_timer_start("se halo diag", .false., timer_halo_diagnostic)
block => domain % blocklist
do while (associated(block))
@@ -175,6 +181,7 @@
block => block % next
end do
+ call mpas_timer_stop("se halo diag", timer_halo_diagnostic)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
@@ -183,6 +190,7 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! compute velocity tendencies, T(u*,w*,p*)
+ call mpas_timer_start("se bcl vel", .false., timer_bcl_vel)
block => domain % blocklist
do while (associated(block))
@@ -264,16 +272,20 @@
block => block % next
end do
- block => domain % blocklist
- do while (associated(block))
- call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % uBcl % array(:,:), &
+ call mpas_timer_start("se halo ubcl", .false., timer_halo_ubcl)
+ block => domain % blocklist
+ do while (associated(block))
+ call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % state % time_levs(2) % state % uBcl % array(:,:), &
block % mesh % nVertLevels, block % mesh % nEdges, &
block % parinfo % edgesToSend, block % parinfo % edgesToRecv)
- block => block % next
- end do
+ block => block % next
+ end do
+ call mpas_timer_stop("se halo ubcl", timer_halo_ubcl)
enddo ! do j=1,config_n_bcl_iter
+
+ call mpas_timer_stop("se bcl vel", timer_bcl_vel)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! END baroclinic iterations on linear Coriolis term
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -285,6 +297,8 @@
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ call mpas_timer_start("se btr vel", .false., timer_btr_vel)
+
oldBtrSubcycleTime = 1
newBtrSubcycleTime = 2
@@ -394,6 +408,7 @@
! boundary update on uBtrNew
+ call mpas_timer_start("se halo ubtr", .false., timer_halo_ubtr)
block => domain % blocklist
do while (associated(block))
@@ -404,6 +419,7 @@
block => block % next
end do ! block
+ call mpas_timer_stop("se halo ubtr", timer_halo_ubtr)
endif ! config_btr_gam1_uWt1>1.0e-12
@@ -468,6 +484,7 @@
end do ! block
! boundary update on SSHnew
+ call mpas_timer_start("se halo ssh", .false., timer_halo_ssh)
block => domain % blocklist
do while (associated(block))
@@ -480,6 +497,7 @@
block => block % next
end do ! block
+ call mpas_timer_stop("se halo ssh", timer_halo_ssh)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -543,6 +561,7 @@
! boundary update on uBtrNew
+ call mpas_timer_start("se halo ubtr", .false., timer_halo_ubtr)
block => domain % blocklist
do while (associated(block))
@@ -553,6 +572,7 @@
block => block % next
end do ! block
+ call mpas_timer_stop("se halo ubtr", timer_halo_ubtr)
end do !do BtrCorIter=1,config_n_btr_cor_iter
@@ -612,6 +632,7 @@
end do ! block
! boundary update on SSHnew
+ call mpas_timer_start("se halo ssh", .false., timer_halo_ssh)
block => domain % blocklist
do while (associated(block))
@@ -622,6 +643,7 @@
block => block % next
end do ! block
+ call mpas_timer_stop("se halo ssh", timer_halo_ssh)
endif ! config_btr_solve_SSH2
@@ -696,6 +718,7 @@
! boundary update on F
+ call mpas_timer_start("se halo F", .false., timer_halo_f)
block => domain % blocklist
do while (associated(block))
@@ -706,6 +729,7 @@
block => block % next
end do ! block
+ call mpas_timer_stop("se halo F", timer_halo_f)
! Check that you can compute SSH using the total sum or the individual increments
@@ -828,6 +852,7 @@
endif ! split_explicit
+ call mpas_timer_stop("se btr vel", timer_btr_vel)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
@@ -851,6 +876,7 @@
! update halo for thicknes for unsplit only
if (trim(config_time_integration) == 'unsplit_explicit') then
+ call mpas_timer_start("se halo h", .false., timer_halo_h)
block => domain % blocklist
do while (associated(block))
call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % h % array(:,:), &
@@ -858,6 +884,7 @@
block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
block => block % next
end do
+ call mpas_timer_stop("se halo h", timer_halo_h)
endif ! unsplit_explicit
@@ -968,6 +995,7 @@
! Boundary update on tracers. This is placed here, rather than
! on tend % tracers as in RK4, because I needed to update
! afterwards for the del4 diffusion operator.
+ call mpas_timer_start("se halo tracers", .false., timer_halo_tracers)
block => domain % blocklist
do while (associated(block))
call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % state % time_levs(2) % state % tracers % array(:,:,:), &
@@ -975,6 +1003,7 @@
block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
block => block % next
end do
+ call mpas_timer_stop("se halo tracers", timer_halo_tracers)
if (split_explicit_step < config_n_ts_iter) then
@@ -1136,7 +1165,7 @@
block => block % next
end do
- call mpas_timer_stop("split_explicit_timestep")
+ call mpas_timer_stop("se timestep", timer_main)
end subroutine ocn_time_integrator_split!}}}
</font>
</pre>