Skip to content

Commit 012f723

Browse files
committed
Merge branch 'atmosphere/acc_atm_bdy_adjust_dynamics_speczone_tend' into develop (PR #1268)
This merge adds OpenACC directives so the atm_bdy_adjust_dynamics_speczone_tend routine can execute on GPUs. Timing information for the OpenACC data transfers in this routine is captured in the log file by a new timer: "atm_bdy_adjust_dynamics_speczone_tend [ACC_data_xfer]". * atmosphere/acc_atm_bdy_adjust_dynamics_speczone_tend: Initial OpenACC port of atm_bdy_adjust_dynamics_speczone_tend
2 parents 657794f + 991ba7b commit 012f723

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/core_atmosphere/dynamics/mpas_atm_time_integration.F

+23-1
Original file line numberDiff line numberDiff line change
@@ -6714,9 +6714,19 @@ subroutine atm_bdy_adjust_dynamics_speczone_tend( tend, mesh, config, nVertLevel
67146714
call mpas_pool_get_array(mesh, 'bdyMaskCell', bdyMaskCell)
67156715
call mpas_pool_get_array(mesh, 'bdyMaskEdge', bdyMaskEdge)
67166716
call mpas_pool_get_array(tend, 'rt_diabatic_tend', rt_diabatic_tend)
6717-
6717+
6718+
MPAS_ACC_TIMER_START('atm_bdy_adjust_dynamics_speczone_tend [ACC_data_xfer]')
6719+
!$acc enter data copyin(tend_ru,tend_rho,tend_rt,tend_rw, &
6720+
!$acc rt_diabatic_tend) &
6721+
!$acc copyin(rho_driving_tend,rt_driving_tend, &
6722+
!$acc ru_driving_tend)
6723+
MPAS_ACC_TIMER_STOP('atm_bdy_adjust_dynamics_speczone_tend [ACC_data_xfer]')
6724+
6725+
!$acc parallel default(present)
6726+
!$acc loop gang worker
67186727
do iCell = cellSolveStart, cellSolveEnd
67196728
if(bdyMaskCell(iCell) > nRelaxZone) then
6729+
!$acc loop vector
67206730
do k=1, nVertLevels
67216731
tend_rho(k,iCell) = rho_driving_tend(k,iCell)
67226732
tend_rt(k,iCell) = rt_driving_tend(k,iCell)
@@ -6725,14 +6735,26 @@ subroutine atm_bdy_adjust_dynamics_speczone_tend( tend, mesh, config, nVertLevel
67256735
end do
67266736
end if
67276737
end do
6738+
!$acc end parallel
67286739

6740+
!$acc parallel default(present)
6741+
!$acc loop gang worker
67296742
do iEdge = edgeSolveStart, edgeSolveEnd
67306743
if(bdyMaskEdge(iEdge) > nRelaxZone) then
6744+
!$acc loop vector
67316745
do k=1, nVertLevels
67326746
tend_ru(k,iEdge) = ru_driving_tend(k,iEdge)
67336747
end do
67346748
end if
67356749
end do
6750+
!$acc end parallel
6751+
6752+
MPAS_ACC_TIMER_START('atm_bdy_adjust_dynamics_speczone_tend [ACC_data_xfer]')
6753+
!$acc exit data copyout(tend_ru,tend_rho,tend_rt, &
6754+
!$acc tend_rw,rt_diabatic_tend) &
6755+
!$acc delete(rho_driving_tend,rt_driving_tend, &
6756+
!$acc ru_driving_tend)
6757+
MPAS_ACC_TIMER_STOP('atm_bdy_adjust_dynamics_speczone_tend [ACC_data_xfer]')
67366758

67376759
end subroutine atm_bdy_adjust_dynamics_speczone_tend
67386760

0 commit comments

Comments
 (0)