Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions modulefiles/ufs_hera.intel
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@ setenv CXX mpiicpc
setenv FC mpiifort
setenv CMAKE_Platform hera.intel

# use shared memory and OpenFabrics Alliance (OFA) fabric with Intel MPI to circumvent RDMA-related bug in DAPL.
setenv I_MPI_FABRICS shm:ofa
# Intel MPI setting to circumvent RDMA-related bug in DAPL.
setenv I_MPI_DAPL_UD 1
Copy link
Copy Markdown
Collaborator

@junwang-noaa junwang-noaa Dec 20, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this variable available on other platforms too? Or is there change/updates required to use set this option on other platforms?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmontuoro made this change, I'm unsure if this is needed elsewhere but I'll see what I can figure out

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove this line too as it is deprecated as Intel 17. Hera admin suggested us not using it.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmontuoro you okay with this?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting I_MPI_DAPL_UD to 1 is required when running coupled GOCART with Intel MPI 2018.0.4. The model will crash otherwise.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmontuoro @JessicaMeixner-NOAA I saw 25 tracers are added in the cpld_bmark_aero test (compared to bmark test) and the number of nodes does not increase. and it takes 35 mins to finish. Since all the RT tests are required to finish within 30mins. I ran the test with 20 tasks/node (TPN_cpl_bmrk=20) and without setting I_MPI_DAPL_UD, the test finished in 24 mins. Since the ufs-weather-model supported platforms have different MPI versions, I think this might be helpful to port the aerosol code on other platforms without the MPI specific I_MPI setting.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@junwang-noaa - Thank you for the suggestion. I've rerun the regression test using 20 tasks/node within 27 minutes of wall clock time on Hera, so I agree to setting TPN_cpl_bmrk=20.

My test also did not set I_MPI_DAPL_UD. Note that, as mentioned in previous discussions, setting I_MPI_DAPL_UD to 1 enables the connectionless DAPL UD transport, which is crucial when running the coupled model (w/ aerosols) on thousands of cores since the default transport would not scale sufficiently, causing timeout errors in the GOCART History component. This regression test uses only 560 MPI tasks and the default DAPL transport may still be adequate. Prototype runs, however, use well above 1k MPI tasks. In such cases, using the connectionless DAPL transport is highly recommended if not required to prevent communication failures.

Note also that the Intel MPI library "switched from the Open Fabrics Alliance* (OFA) framework to the Open Fabrics Interfaces* (OFI) framework" with release 2019. Therefore, the DAPL fabric is deprecated starting with the 2019 release (see Intel documentation). The UFS weather model is using Intel MPI 2018 on Hera and Orion.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's OK to use DAPL, but the variable I_MPI_DAPL_UD is a depreciated option since Intel 17. Because of this, the impact on srun/slurm is unknown. Some of opn runs are using a couple of thousands tasks without using this setting. Do you have any test case with thousand tasks we can take look the performance of not using this setting? I am not sure what is the problem with those runs with thousand tasks

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@junwang-noaa - DAPL and I_MPI_DAPL_UD are deprecated since release 2019 of Intel MPI. We are still using Intel MPI 2018 on some platforms.

Setting I_MPI_DAPL_UD to 1 (as recommended by NASA) is necessary when running GOCART on a large number of MPI tasks, since the MAPL I/O implementation is based on MPI one-sided communication using Remote Memory Access (RMA) for higher performance. This requires a RDMA-capable communication fabric such as DAPL. Enabling DAPL connectionless transport (I_MPI_DAPL_UD=1) addresses scalability issues/failures at higher core counts and reduces the overall memory footprint. This setting is only needed when running the UFS weather model with GOCART.

12 changes: 9 additions & 3 deletions tests/default_vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ elif [[ $MACHINE_ID = hera.* ]]; then

TASKS_cpl_dflt=200; TPN_cpl_dflt=40; INPES_cpl_dflt=3; JNPES_cpl_dflt=8
THRD_cpl_dflt=1; WPG_cpl_dflt=6; MPB_cpl_dflt="0 143"; APB_cpl_dflt="0 149"
OPB_cpl_dflt="150 169"; IPB_cpl_dflt="170 179"; WPB_cpl_dflt="180 199"
CHM_cpl_dflt="0 143"; OPB_cpl_dflt="150 169"; IPB_cpl_dflt="170 179"; WPB_cpl_dflt="180 199"
NPROC_ICE_cpl_dflt=10

TASKS_cpl_thrd=120; TPN_cpl_thrd=20; INPES_cpl_thrd=3; JNPES_cpl_thrd=4
Expand All @@ -267,7 +267,7 @@ elif [[ $MACHINE_ID = hera.* ]]; then

TASKS_cpl_bmrk=560; TPN_cpl_bmrk=40; INPES_cpl_bmrk=6; JNPES_cpl_bmrk=8
THRD_cpl_bmrk=1; WPG_cpl_bmrk=24; MPB_cpl_bmrk="0 287"; APB_cpl_bmrk="0 311"
OPB_cpl_bmrk="312 431"; IPB_cpl_bmrk="432 479"; WPB_cpl_bmrk="480 559"
CHM_cpl_bmrk="0 287"; OPB_cpl_bmrk="312 431"; IPB_cpl_bmrk="432 479"; WPB_cpl_bmrk="480 559"
NPROC_ICE_cpl_bmrk=48

TASKS_cpl_bmrk_mpi=600; TPN_cpl_bmrk_mpi=40; INPES_cpl_bmrk_mpi=6; JNPES_cpl_bmrk_mpi=8
Expand Down Expand Up @@ -762,6 +762,8 @@ export JMO=190
export DIAG_TABLE=diag_table_gfsv16
export FIELD_TABLE=field_table_gfsv16

export DOMAINS_STACK_SIZE=3000000

# Coldstart/warmstart
#rt script for ICs
export MODEL_INITIALIZATION=false
Expand Down Expand Up @@ -822,7 +824,7 @@ export DO_UGWP_V1_OROG_ONLY=.false.
export CDMBWD_c48='0.071,2.1,1.0,1.0'
export CDMBWD_c96='0.14,1.8,1.0,1.0'
export CDMBWD_c192='0.23,1.5,1.0,1.0'
export CDMBWD_c384='1.1,0.72,1.0,1.0'
export CDMBWD_c384='1.0,2.2,1.0,1.0'
export CDMBWD_c768='4.0,0.15,1.0,1.0'

# set default
Expand Down Expand Up @@ -1018,6 +1020,8 @@ export NPZ=127
export NPZP=128

# default resources
export DOMAINS_STACK_SIZE=3000000

export TASKS=$TASKS_cpl_dflt
export TPN=$TPN_cpl_dflt
export INPES=$INPES_cpl_dflt
Expand All @@ -1027,6 +1031,7 @@ export WRTTASK_PER_GROUP=$WPG_cpl_dflt

export med_petlist_bounds=$MPB_cpl_dflt
export atm_petlist_bounds=$APB_cpl_dflt
export chm_petlist_bounds=$CHM_cpl_dflt
export ocn_petlist_bounds=$OPB_cpl_dflt
export ice_petlist_bounds=$IPB_cpl_dflt
export wav_petlist_bounds=$WPB_cpl_dflt
Expand All @@ -1041,6 +1046,7 @@ export DT_THERM_MOM6=3600
export NEMS_CONFIGURE=nems.configure.cpld_wave.IN
export med_model=cmeps
export atm_model=fv3
export chm_model=gocart
export ocn_model=mom6
export ice_model=cice6
export wav_model=ww3
Expand Down
8 changes: 7 additions & 1 deletion tests/fv3_conf/cpld_control_run.IN
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fi
ICERES=${OCNRES:0:1}.${OCNRES:1}

if [[ $BMIC == .true. ]]; then
FV3_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/gfs_p7/@[ATMRES]_L@[NPZ]/INPUT
FV3_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/gfs_p7.2/@[ATMRES]_L@[NPZ]/INPUT
MOM_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/mom6_da
ICE_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/cpc
else
Expand Down Expand Up @@ -129,3 +129,9 @@ if [ $DO_UGWP_V1 = .true. ]; then
cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127/oro_data_ls* ./INPUT
cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127/oro_data_ss* ./INPUT
fi

#prognostic aerosols
if [ $CPLCHM = .true. ]; then
cp @[INPUTDATA_ROOT]/GOCART/p7/rc/*.rc .
ln -sf @[INPUTDATA_ROOT]/GOCART/p7/ExtData .
fi
2 changes: 1 addition & 1 deletion tests/parm/cpld_control.nml.IN
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ deflate_level=1

&fms_nml
clock_grain = 'ROUTINE'
domains_stack_size = 3000000
domains_stack_size = @[DOMAINS_STACK_SIZE]
print_memory_usage = .false.
/

Expand Down
303 changes: 303 additions & 0 deletions tests/parm/diag_table/diag_table_p7.2_template

Large diffs are not rendered by default.

133 changes: 133 additions & 0 deletions tests/parm/nems.configure.cpld_aero_wave.IN
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#############################################
#### NEMS Run-Time Configuration File #####
#############################################

# EARTH #
EARTH_component_list: MED ATM CHM OCN ICE WAV
EARTH_attributes::
Verbosity = 0
::

# MED #
MED_model: @[med_model]
MED_petlist_bounds: @[med_petlist_bounds]
::

# ATM #
ATM_model: @[atm_model]
ATM_petlist_bounds: @[atm_petlist_bounds]
ATM_attributes::
Verbosity = 0
DumpFields = false
ProfileMemory = false
OverwriteSlice = true
::

# CHM #
CHM_model: @[chm_model]
CHM_petlist_bounds: @[chm_petlist_bounds]
CHM_attributes::
Verbosity = 0
::

# OCN #
OCN_model: @[ocn_model]
OCN_petlist_bounds: @[ocn_petlist_bounds]
OCN_attributes::
Verbosity = 0
DumpFields = false
ProfileMemory = false
OverwriteSlice = true
mesh_ocn = @[MESHOCN_ICE]
::

# ICE #
ICE_model: @[ice_model]
ICE_petlist_bounds: @[ice_petlist_bounds]
ICE_attributes::
Verbosity = 0
DumpFields = false
ProfileMemory = false
OverwriteSlice = true
mesh_ice = @[MESHOCN_ICE]
stop_n = @[RESTART_N]
stop_option = nhours
stop_ymd = -999
::

# WAV #
WAV_model: @[wav_model]
WAV_petlist_bounds: @[wav_petlist_bounds]
WAV_attributes::
Verbosity = 0
OverwriteSlice = false
::

# CMEPS warm run sequence
runSeq::
@@[coupling_interval_slow_sec]
MED med_phases_prep_ocn_avg
MED -> OCN :remapMethod=redist
OCN -> WAV
WAV -> OCN :srcMaskValues=1
OCN
@@[coupling_interval_fast_sec]
MED med_phases_prep_atm
MED med_phases_prep_ice
MED -> ATM :remapMethod=redist
MED -> ICE :remapMethod=redist
WAV -> ATM :srcMaskValues=1
ATM -> WAV
ICE -> WAV
ATM phase1
ATM -> CHM
CHM
CHM -> ATM
ATM phase2
ICE
WAV
ATM -> MED :remapMethod=redist
MED med_phases_post_atm
ICE -> MED :remapMethod=redist
MED med_phases_post_ice
MED med_phases_prep_ocn_accum
@
OCN -> MED :remapMethod=redist
MED med_phases_post_ocn
MED med_phases_restart_write
@
::

# CMEPS variables

DRIVER_attributes::
::

MED_attributes::
ATM_model = @[atm_model]
ICE_model = @[ice_model]
OCN_model = @[ocn_model]
history_n = 1
history_option = nhours
history_ymd = -999
coupling_mode = @[CPLMODE]
::
ALLCOMP_attributes::
ScalarFieldCount = 2
ScalarFieldIdxGridNX = 1
ScalarFieldIdxGridNY = 2
ScalarFieldName = cpl_scalars
start_type = @[RUNTYPE]
restart_dir = RESTART/
case_name = ufs.cpld
restart_n = @[RESTART_N]
restart_option = nhours
restart_ymd = -999
dbug_flag = @[cap_dbug_flag]
use_coldstart = @[use_coldstart]
use_mommesh = @[use_mommesh]
eps_imesh = @[eps_imesh]
stop_n = @[FHMAX]
stop_option = nhours
stop_ymd = -999
::
4 changes: 4 additions & 0 deletions tests/rt.conf
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ RUN | cpld_restart_c384_p8
COMPILE | -DAPP=S2S -DDEBUG=ON -DCCPP_SUITES=FV3_GFS_v16_coupled_p8 | - wcoss_cray | fv3 |
RUN | cpld_debug_p8 | - wcoss_cray | fv3 |

# Add aerosols (temporary)
COMPILE | -DAPP=S2SW -DUFS_GOCART=ON -DCCPP_SUITES=FV3_GFS_v16_coupled_nsstNoahmpUGWPv1 | + hera.intel | fv3 |
RUN | cpld_bmark_p7_aero | + hera.intel | fv3 |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to change the test name to cpld_bmark_p7.2

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are moving forward to P8 should this be cpld_bmkark_p8_aero instead or do you want this to strictly follow p7.2?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless the entire feature test suite for P8 gets updated in this PR (meaning all resolutions), I consider this a feature test for s2sw+aerosols, outside of the Prototype feature set. So my suggestion is that this test is cpld_bmark_aero or something similar.


###################################################################################################################################################################################
# PROD tests #
###################################################################################################################################################################################
Expand Down
2 changes: 1 addition & 1 deletion tests/rt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ fi

INPUTDATA_ROOT=${INPUTDATA_ROOT:-$DISKNM/NEMSfv3gfs/input-data-20211210}
INPUTDATA_ROOT_WW3=${INPUTDATA_ROOT}/WW3_input_data_20211113
INPUTDATA_ROOT_BMIC=${INPUTDATA_ROOT_BMIC:-$DISKNM/NEMSfv3gfs/BM_IC-20210717}
INPUTDATA_ROOT_BMIC=${INPUTDATA_ROOT_BMIC:-$DISKNM/NEMSfv3gfs/BM_IC-20211221}

shift $((OPTIND-1))
[[ $# -gt 1 ]] && usage
Expand Down
Loading