Skip to content

Commit 7eacf99

Browse files
committed
Merge branch 'feature/sdrabenh/gcm_v12' into feature/mathomp4/v12-benchmark-fv3
# Conflicts: # FV_StateMod.F90 # scripts/fv3_setup
2 parents a4e1857 + 869d505 commit 7eacf99

File tree

4 files changed

+62
-98
lines changed

4 files changed

+62
-98
lines changed

AdvCore_GridCompMod.F90

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ module AdvCore_GridCompMod
7575
implicit none
7676
private
7777

78+
integer :: QSPLIT
7879
integer :: nx, ny
7980
integer :: npes_x, npes_y
8081
real(FVPRC) :: dt
@@ -330,6 +331,10 @@ subroutine SetServices(GC, rc)
330331
call MAPL_GetResource( MAPL, rpt_mass, 'ADV_CORE_REPORT_TRACER_MASS:', default=rpt_mass, RC=STATUS )
331332
VERIFY_(STATUS)
332333

334+
call MAPL_GetResource( MAPL, QSPLIT, 'ADV_QSPLIT:', default=0, RC=STATUS )
335+
VERIFY_(STATUS)
336+
337+
333338
! Start up FV if AdvCore is running without FV3_DynCoreIsRunning
334339
!--------------------------------------------------
335340
if (.NOT. FV3_DynCoreIsRunning) then
@@ -758,7 +763,7 @@ subroutine Run(GC, IMPORT, EXPORT, CLOCK, RC)
758763
call offline_tracer_advection(TRACERS, PLE0, PLE1, MFX, MFY, CX, CY, &
759764
FV_Atm(1)%gridstruct, FV_Atm(1)%flagstruct, FV_Atm(1)%bd, &
760765
FV_Atm(1)%domain, FV_Atm(1)%npx, FV_Atm(1)%npy, FV_Atm(1)%npz, &
761-
NQ, dt)
766+
NQ, dt, QSPLIT)
762767

763768
! Get Tracer Mass after advection
764769
!--------------------------------

DynCore_GridCompMod.F90

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6617,7 +6617,10 @@ subroutine RunAddIncs(gc, import, export, clock, rc)
66176617

66186618
! Add Diabatic Forcing to State Variables
66196619
! ---------------------------------------
6620+
call MAPL_TimerOn (GENSTATE,"PHYS_ADD_INCS")
66206621
call ADD_INCS ( STATE,IMPORT,DT )
6622+
call MAPL_TimerOff(GENSTATE,"PHYS_ADD_INCS")
6623+
66216624

66226625
if (DYN_DEBUG) call DEBUG_FV_STATE('PHYSICS ADD_INCS',STATE)
66236626

FV_StateMod.F90

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ module FV_StateMod
7474
logical :: fix_mass = .true.
7575
integer :: CASE_ID = 11
7676
integer :: AdvCore_Advection = 0
77+
integer :: FV3_QSPLIT = 0
7778
character(LEN=ESMF_MAXSTR) :: FV3_CONFIG
7879

7980
public FV_Atm
@@ -437,6 +438,8 @@ subroutine FV_Setup(GC,LAYOUT_FILE, RC)
437438
call MAPL_GetResource( MAPL, AdvCore_Advection, label='AdvCore_Advection:', default=AdvCore_Advection, rc=status )
438439
VERIFY_(STATUS)
439440

441+
call MAPL_GetResource( MAPL, FV3_QSPLIT, label='FV3_QSPLIT:', default=FV3_QSPLIT, rc=status )
442+
VERIFY_(STATUS)
440443
call MAPL_GetResource( MAPL, ADJUST_DT, label='ADJUST_DT:' , default=ADJUST_DT, rc=status )
441444
VERIFY_(STATUS)
442445
call MAPL_GetResource( MAPL, INT_fix_mass, label='fix_mass:' , default=INT_fix_mass, rc=status )
@@ -642,9 +645,10 @@ subroutine FV_Setup(GC,LAYOUT_FILE, RC)
642645
FV_Atm(1)%flagstruct%rf_cutoff = 0.35e2
643646
! 6th order divergence default damping options
644647
FV_Atm(1)%flagstruct%nord = 2
645-
FV_Atm(1)%flagstruct%dddmp = 0.2 ! Smagorinsky damping
646-
FV_Atm(1)%flagstruct%d4_bg = 0.12
647-
FV_Atm(1)%flagstruct%d2_bg = 0.0
648+
FV_Atm(1)%flagstruct%dddmp = 0.2 ! Smagorinsky damping coef
649+
FV_Atm(1)%flagstruct%d4_bg_top = 0.12 ! High-order Divg Damping coef
650+
FV_Atm(1)%flagstruct%d4_bg_bot = 0.12 ! High-order Divg Damping coef
651+
FV_Atm(1)%flagstruct%d2_bg = 0.0 ! 2nd order Divg Damping coef
648652
FV_Atm(1)%flagstruct%d_ext = 0.0 ! External damping
649653
! Local Richardson-number turbulent mixing
650654
FV_Atm(1)%flagstruct%fv_sg_adj = DT*4
@@ -720,7 +724,8 @@ subroutine FV_Setup(GC,LAYOUT_FILE, RC)
720724
! 2nd order damping
721725
FV_Atm(1)%flagstruct%nord = 0
722726
FV_Atm(1)%flagstruct%dddmp = 0.2
723-
FV_Atm(1)%flagstruct%d4_bg = 0.0
727+
FV_Atm(1)%flagstruct%d4_bg_top = 0.0
728+
FV_Atm(1)%flagstruct%d4_bg_bot = 0.0
724729
FV_Atm(1)%flagstruct%d2_bg = 0.0075
725730
FV_Atm(1)%flagstruct%d_ext = 0.02
726731
! disable vorticity damping
@@ -1942,13 +1947,13 @@ subroutine FV_Run (STATE, EXPORT, CLOCK, GC, PLE0, RC)
19421947
if (run_gtfv3 == 0) then
19431948
call cpu_time(start)
19441949
#endif
1945-
1950+
if (FV3_QSPLIT == 0) FV3_QSPLIT = FV_Atm(1)%flagstruct%q_split
19461951
call fv_dynamics( &
19471952
FV_Atm(1)%npx, FV_Atm(1)%npy, FV_Atm(1)%npz, FV_Atm(1)%ncnst, FV_Atm(1)%ng, myDT, &
19481953
FV_Atm(1)%flagstruct%consv_te, FV_Atm(1)%flagstruct%fill, &
19491954
kappa, cp, zvir, &
19501955
FV_Atm(1)%ptop, FV_Atm(1)%ks, FV_Atm(1)%flagstruct%ncnst, &
1951-
state%ksplit, state%nsplit, FV_Atm(1)%flagstruct%q_split, &
1956+
state%ksplit, state%nsplit, FV3_QSPLIT, &
19521957
FV_Atm(1)%u, FV_Atm(1)%v, FV_Atm(1)%w, FV_Atm(1)%delz, &
19531958
FV_Atm(1)%flagstruct%hydrostatic, &
19541959
FV_Atm(1)%pt, FV_Atm(1)%delp, FV_Atm(1)%q, &
@@ -2335,24 +2340,14 @@ subroutine FV_Run (STATE, EXPORT, CLOCK, GC, PLE0, RC)
23352340
if (mpp_pe()==0) print*,''
23362341
if (mpp_pe()==0) print*,'-------------- FV3 Tracer Debug After DYN --------------'
23372342
allocate( DEBUG_ARRAY(isc:iec,jsc:jec,npz) )
2338-
endif
2339-
do n=1,STATE%GRID%NQ
2340-
if (state%vars%tracer(n)%is_r4) then
2341-
where (state%vars%tracer(n)%content_r4 < tiny(0.0))
2342-
state%vars%tracer(n)%content_r4 = 0.0
2343-
end where
2344-
if (DEBUG_ADV) DEBUG_ARRAY(:,:,1:npz) = state%vars%tracer(n)%content_r4
2345-
else
2346-
where (state%vars%tracer(n)%content < tiny(0.0))
2347-
state%vars%tracer(n)%content = 0.0
2348-
end where
2349-
if (DEBUG_ADV) DEBUG_ARRAY(:,:,1:npz) = state%vars%tracer(n)%content
2350-
endif
2351-
if (DEBUG_ADV) then
2352-
call prt_maxmin(TRIM(state%vars%tracer(n)%tname), DEBUG_ARRAY, isc, iec, jsc, jec, 0, npz, fac1)
2353-
endif
2354-
enddo
2355-
if (DEBUG_ADV) then
2343+
do n=1,STATE%GRID%NQ
2344+
if (state%vars%tracer(n)%is_r4) then
2345+
DEBUG_ARRAY(:,:,1:npz) = state%vars%tracer(n)%content_r4
2346+
else
2347+
DEBUG_ARRAY(:,:,1:npz) = state%vars%tracer(n)%content
2348+
endif
2349+
call prt_maxmin(TRIM(state%vars%tracer(n)%tname), DEBUG_ARRAY, isc, iec, jsc, jec, 0, npz, fac1)
2350+
enddo
23562351
deallocate ( DEBUG_ARRAY )
23572352
if (mpp_pe()==0) print*,'-------------- FV3 Tracer Debug After DYN --------------'
23582353
if (mpp_pe()==0) print*,''
@@ -4832,7 +4827,8 @@ subroutine echo_fv3_setup()
48324827
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%nord ,format='("FV3 nord: ",(I3))' )
48334828
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%dddmp ,format='("FV3 dddmp: ",(F7.5))' )
48344829
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d2_bg ,format='("FV3 d2_bg: ",(F7.5))' )
4835-
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d4_bg ,format='("FV3 d4_bg: ",(F7.5))' )
4830+
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d4_bg_top ,format='("FV3 d4_bg_top: ",(F7.5))' )
4831+
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d4_bg_bot ,format='("FV3 d4_bg_bot: ",(F7.5))' )
48364832
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%vtdm4 ,format='("FV3 vtdm4: ",(F7.5))' )
48374833
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d2_bg_k1 ,format='("FV3 d2_bg_k1: ",(F7.5))' )
48384834
call WRITE_PARALLEL ( FV_Atm(1)%flagstruct%d2_bg_k2 ,format='("FV3 d2_bg_k2: ",(F7.5))' )
@@ -4981,19 +4977,21 @@ subroutine adiabatic_init(myDT,DEBUG_ARRAY,fac1)
49814977
real(FVPRC), allocatable :: w_dt(:,:,:)
49824978

49834979
integer :: nord
4984-
real(FVPRC):: dddmp, d4_bg, d2_bg, d_ext
4980+
real(FVPRC):: dddmp, d4_bg_top, d4_bg_bot, d2_bg, d_ext
49854981

49864982
! Save input damping state
49874983
nord = FV_Atm(1)%flagstruct%nord
49884984
dddmp = FV_Atm(1)%flagstruct%dddmp
4989-
d4_bg = FV_Atm(1)%flagstruct%d4_bg
4985+
d4_bg_top = FV_Atm(1)%flagstruct%d4_bg_top
4986+
d4_bg_bot = FV_Atm(1)%flagstruct%d4_bg_bot
49904987
d2_bg = FV_Atm(1)%flagstruct%d2_bg
49914988
d_ext = FV_Atm(1)%flagstruct%d_ext
49924989

49934990
! Use 2nd order damping for spinup
49944991
FV_Atm(1)%flagstruct%nord = 0
49954992
FV_Atm(1)%flagstruct%dddmp = 0.2
4996-
FV_Atm(1)%flagstruct%d4_bg = 0.0
4993+
FV_Atm(1)%flagstruct%d4_bg_top = 0.0
4994+
FV_Atm(1)%flagstruct%d4_bg_bot = 0.0
49974995
FV_Atm(1)%flagstruct%d2_bg = 0.0075
49984996
FV_Atm(1)%flagstruct%d_ext = 0.02
49994997

@@ -5188,7 +5186,8 @@ subroutine adiabatic_init(myDT,DEBUG_ARRAY,fac1)
51885186
! Reset input damping parameters
51895187
FV_Atm(1)%flagstruct%nord = nord
51905188
FV_Atm(1)%flagstruct%dddmp = dddmp
5191-
FV_Atm(1)%flagstruct%d4_bg = d4_bg
5189+
FV_Atm(1)%flagstruct%d4_bg_top = d4_bg_top
5190+
FV_Atm(1)%flagstruct%d4_bg_bot = d4_bg_bot
51925191
FV_Atm(1)%flagstruct%d2_bg = d2_bg
51935192
FV_Atm(1)%flagstruct%d_ext = d_ext
51945193

scripts/fv3_setup

Lines changed: 25 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -253,45 +253,30 @@ ASKPROC:
253253

254254
if ( $SITE == 'NCCS' ) then
255255

256-
set BUILT_ON_SLES15 = @BUILT_ON_SLES15@
257-
258-
if ("$BUILT_ON_SLES15" == "TRUE") then
259-
echo "Enter the ${C1}Processor Type${CN} you wish to run on:"
260-
echo " ${C2}cas (Cascade Lake)${CN}"
261-
echo " ${C2}mil (Milan)${CN} (default)"
262-
echo " "
263-
set MODEL = `echo $<`
264-
set MODEL = `echo $MODEL | tr "[:upper:]" "[:lower:]"`
265-
if ( .$MODEL == .) then
266-
set MODEL = 'mil'
267-
endif
268-
269-
if( $MODEL != 'mil' & \
270-
$MODEL != 'cas' ) goto ASKPROC
271-
272-
if ($MODEL == 'mil') then
273-
# we use 120 of 128 cores per node for even division
274-
set NCPUS_PER_NODE = 120
275-
else if ($MODEL == 'cas') then
276-
# we use 40 of 46 cores per node for even division
277-
set NCPUS_PER_NODE = 40
278-
endif
279-
else
280-
echo "Enter the ${C1}Processor Type${CN} you wish to run on:"
281-
echo " ${C2}cas (Cascade Lake) (default)${CN}"
282-
echo " "
283-
set MODEL = `echo $<`
284-
set MODEL = `echo $MODEL | tr "[:upper:]" "[:lower:]"`
285-
if ( .$MODEL == .) then
286-
set MODEL = 'cas'
287-
endif
288-
289-
if( $MODEL != 'cas' ) goto ASKPROC
256+
echo "Enter the ${C1}Processor Type${CN} you wish to run on:"
257+
echo " ${C2}mil (Milan)${CN} (default)"
258+
echo " ${C2}cas (Cascade Lake)${CN}"
259+
echo " "
260+
set MODEL = `echo $<`
261+
set MODEL = `echo $MODEL | tr "[:upper:]" "[:lower:]"`
262+
if ( .$MODEL == .) then
263+
set MODEL = 'mil'
264+
endif
290265

291-
if ($MODEL == 'cas') then
292-
# We use 40 of 46 cores per node for even division
293-
set NCPUS_PER_NODE = 40
294-
endif
266+
if( $MODEL != 'mil' & \
267+
$MODEL != 'cas' ) goto ASKPROC
268+
269+
if ($MODEL == 'mil') then
270+
# We save a couple processes for the kernel
271+
set NCPUS_PER_NODE = 126
272+
else if ($MODEL == 'cas') then
273+
# NCCS currently recommends that users do not run with
274+
# 48 cores per node on SCU16 due to OS issues and
275+
# recommends that CPU-intensive works run with 46 or less
276+
# cores. As 45 is a multiple of 3, it's the best value
277+
# that doesn't waste too much
278+
#set NCPUS_PER_NODE = 48
279+
set NCPUS_PER_NODE = 45
295280
endif
296281

297282
else if ( $SITE == 'NAS' ) then
@@ -774,41 +759,13 @@ EOF
774759
if ( $SITE == 'NCCS' ) then
775760

776761
cat >> $EXPDIR/SETENV.commands << EOF
777-
setenv I_MPI_SHM_HEAP_VSIZE 512
778-
setenv PSM2_MEMORY large
779-
EOF
780-
781-
# Testing at NCCS showed these caused a crash at higher resolutions at
782-
# restart read
783-
if ( $USING_SINGULARITY == FALSE ) then
784-
785-
cat >> $EXPDIR/SETENV.commands << EOF
786-
setenv I_MPI_EXTRA_FILESYSTEM 1
787-
setenv I_MPI_EXTRA_FILESYSTEM_FORCE gpfs
788-
EOF
762+
setenv I_MPI_ADJUST_ALLREDUCE 12
763+
setenv I_MPI_ADJUST_GATHERV 3
789764
790-
endif # if NOT Singularity
791-
792-
# Testing by Bill Putman found these to be
793-
# useful flags with Intel MPI on SLES15 on the
794-
# Milan nodes.
795-
# Note 1: Testing by NCCS shows the PSM3 provider
796-
# runs on the Infiniband fabric. Tests show it runs
797-
# up to C720.
798-
# Note 2: When the Cascade Lakes are moved to
799-
# SLES15, these will need to be Milan-only flags
800-
# as Intel MPI will probably work just fine with
801-
# Intel chips.
802-
if ("$BUILT_ON_SLES15" == "TRUE") then
803-
cat >> $EXPDIR/SETENV.commands << EOF
804765
setenv I_MPI_FABRICS shm:ofi
805766
setenv I_MPI_OFI_PROVIDER psm3
806-
setenv I_MPI_ADJUST_GATHERV 3
807-
setenv I_MPI_ADJUST_ALLREDUCE 12
808767
EOF
809768

810-
endif # if SLES15
811-
812769
endif # if NCCS
813770

814771
endif # if mpi

0 commit comments

Comments
 (0)