Skip to content

Commit 49931e7

Browse files
authored
Merge pull request #128 from GEOS-ESM/feature/mathomp4/cascade-lake-nccs
Updates for Cascade at NCCS and Rome at NAS
2 parents 8373e6e + 45a7c72 commit 49931e7

File tree

2 files changed

+72
-26
lines changed

2 files changed

+72
-26
lines changed

scripts/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ else()
44
set(CFG_NONHYDROSTATIC TRUE)
55
endif()
66

7+
# Did we build for AMD Rome hardware (aka EPYC)?
8+
cmake_host_system_information(RESULT proc_decription QUERY PROCESSOR_DESCRIPTION)
9+
if (${proc_decription} MATCHES "EPYC")
10+
set(CFG_BUILT_ON_ROME TRUE)
11+
else ()
12+
set(CFG_BUILT_ON_ROME FALSE)
13+
endif ()
14+
715
configure_file(fv3_setup fv3_setup @ONLY)
816
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/fv3_setup DESTINATION bin)
917

scripts/fv3_setup

Lines changed: 64 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ endif
158158
ASKHYDRO:
159159

160160
set DEFAULT_NON_HYDROSTATIC = @CFG_NONHYDROSTATIC@
161-
echo "Do you wish to ${C1}NON-HYDROSTATIC${CN} dynamics? (Default: ${C2}${DEFAULT_NON_HYDROSTATIC}${CN})"
161+
echo "Do you wish to run ${C1}NON-HYDROSTATIC${CN} dynamics? (Default: ${C2}${DEFAULT_NON_HYDROSTATIC}${CN})"
162162

163163
set DO_NONHYDRO = $<
164164
if( .$DO_NONHYDRO == . ) then
@@ -237,46 +237,71 @@ ASKPROC:
237237
if ( $SITE == 'NCCS' ) then
238238
echo "Enter the ${C1}Processor Type${CN} you wish to run on:"
239239
echo " ${C2}hasw (Haswell)${CN} (default)"
240-
if (-e /etc/os-release) then
241-
echo " ${C2}sky (Skylake)${CN}"
242-
endif
240+
echo " ${C2}sky (Skylake)${CN}"
241+
# Keep Cascade Lake hidden until in general use
242+
#echo " ${C2}cas (Cascade Lake)${CN}"
243+
echo " "
243244
set MODEL = `echo $<`
244245
set MODEL = `echo $MODEL | tr "[:upper:]" "[:lower:]"`
245246
if ( .$MODEL == .) then
246247
set MODEL = 'hasw'
247248
endif
248249

249250
if( $MODEL != 'hasw' & \
250-
$MODEL != 'sky' ) goto ASKPROC
251+
$MODEL != 'sky' & \
252+
$MODEL != 'cas' ) goto ASKPROC
251253

252254
if ( $MODEL == 'hasw') then
253255
set NCPUS_PER_NODE = 28
254256
else if ($MODEL == 'sky') then
255257
set NCPUS_PER_NODE = 40
258+
else if ($MODEL == 'cas') then
259+
set NCPUS_PER_NODE = 48
256260
endif
257261

258262
else if ( $SITE == 'NAS' ) then
263+
264+
# At NAS, if you build on Rome, we currently limit you to run on
265+
# Rome; this is for two reasons. First, Romes are on SLES 15 and
266+
# if you build on SLES 15, you can only run on SLES 15. Second,
267+
# while a built-on-Rome GEOS might work on Intel processors, it
268+
# will (probably) have a different output than if built on Intel
269+
# due to different optimization flags. This would violate the GEOS
270+
# capability to get the same answers at NAS and NCCS
271+
272+
set BUILT_ON_ROME = @CFG_BUILT_ON_ROME@
273+
259274
echo "Enter the ${C1}Processor Type${CN} you wish to run on:"
260-
echo " ${C2}has (Haswell)${CN}"
261-
echo " ${C2}bro (Broadwell)${CN}"
262-
echo " ${C2}sky (Skylake)${CN} (default)"
263-
echo " ${C2}cas (Cascade Lake)${CN}"
264-
echo " ${C2}rom (AMD Rome)${CN}"
265-
echo " "
266-
echo " NOTE: Due to how FV3 is compiled by default, Sandy Bridge"
267-
echo " and Ivy Bridge are not supported by current GEOS"
275+
if( "$BUILT_ON_ROME" != "TRUE" ) then
276+
echo " ${C2}has (Haswell)${CN}"
277+
echo " ${C2}bro (Broadwell)${CN}"
278+
echo " ${C2}sky (Skylake)${CN} (default)"
279+
echo " ${C2}cas (Cascade Lake)${CN}"
280+
echo " "
281+
echo " NOTE: Due to how FV3 is compiled by default, Sandy Bridge"
282+
echo " and Ivy Bridge are not supported by current GEOS"
283+
else
284+
echo " ${C2}rom (AMD Rome)${CN} (default)"
285+
endif
268286
echo " "
269287
set MODEL = `echo $<`
270288
set MODEL = `echo $MODEL | tr "[:upper:]" "[:lower:]"`
271289
if ( .$MODEL == .) then
272-
set MODEL = 'sky'
290+
if( "$BUILT_ON_ROME" != "TRUE" ) then
291+
set MODEL = 'sky'
292+
else
293+
set MODEL = 'rom'
294+
endif
273295
endif
274296

275-
if( $MODEL != 'has' & \
276-
$MODEL != 'bro' & \
277-
$MODEL != 'sky' & \
278-
$MODEL != 'cas' & \
279-
$MODEL != 'rom' ) goto ASKPROC
297+
if( "$BUILT_ON_ROME" != "TRUE" ) then
298+
if( $MODEL != 'has' & \
299+
$MODEL != 'bro' & \
300+
$MODEL != 'sky' & \
301+
$MODEL != 'cas' ) goto ASKPROC
302+
else
303+
if( $MODEL != 'rom' ) goto ASKPROC
304+
endif
280305

281306
# Some processors have weird names at NAS
282307
# ---------------------------------------
@@ -602,12 +627,10 @@ EOF
602627
else if( $MPI == mvapich2 ) then
603628

604629
cat > $EXPDIR/SETENV.commands << EOF
605-
#setenv MV2_ON_DEMAND_THRESHOLD 8192
606-
#setenv MV2_USE_SHMEM_ALLREDUCE 0
607-
#setenv MV2_USE_SHMEM_COLL 0
608-
#setenv MV2_USE_UD_HYBRID 0
609630
setenv MV2_ENABLE_AFFINITY 0
610631
setenv SLURM_DISTRIBUTION block
632+
setenv MV2_MPIRUN_TIMEOUT 100
633+
setenv MV2_GATHERV_SSEND_THRESHOLD 256
611634
EOF
612635

613636
else if( $MPI == mpt ) then
@@ -625,6 +648,8 @@ cat > $EXPDIR/SETENV.commands << EOF
625648
setenv MPI_XPMEM_ENABLED yes
626649
unsetenv SUPPRESS_XPMEM_TRIM_THRESH
627650
651+
setenv MPI_LAUNCH_TIMEOUT 40
652+
628653
# For some reason, PMI_RANK is randomly set and interferes
629654
# with binarytile.x and other executables.
630655
unsetenv PMI_RANK
@@ -641,16 +666,29 @@ else if( $MPI == intelmpi ) then
641666

642667
cat > $EXPDIR/SETENV.commands << EOF
643668
#setenv MPS_STAT_LEVEL 4
669+
setenv I_MPI_ADJUST_ALLREDUCE 12
670+
setenv I_MPI_ADJUST_GATHERV 3
671+
672+
# This flag prints out the Intel MPI state. Uncomment if needed
673+
#setenv I_MPI_DEBUG 9
674+
EOF
675+
676+
# These are options determined to be useful at NCCS
677+
# Not setting generally as they are more fabric/cluster
678+
# specific compared to the above adjustments
679+
if ( $SITE == 'NCCS' ) then
680+
681+
cat >> $EXPDIR/SETENV.commands << EOF
682+
setenv I_MPI_SHM_HEAP_VSIZE 512
644683
setenv PSM2_MEMORY large
645684
setenv PSM2_PATH_SELECTION adaptive
646-
setenv I_MPI_ADJUST_GATHERV 3
647-
setenv I_MPI_ADJUST_ALLREDUCE 12
648685
setenv I_MPI_EXTRA_FILESYSTEM 1
649686
setenv I_MPI_EXTRA_FILESYSTEM_FORCE gpfs
650687
setenv ROMIO_FSTYPE_FORCE "gpfs:"
651-
#setenv I_MPI_DEBUG 6
652688
EOF
653689

690+
endif # if NCCS
691+
654692
endif # if mpi
655693

656694
#######################################################################

0 commit comments

Comments
 (0)