Skip to content

Commit

Permalink
Load updated modulefiles for coupled aerosols on Hera/Intel.
Browse files Browse the repository at this point in the history
A new shell function (get_platform) is introduced to increase
modularity. This fuction auto-detects the local platform and
returns a string identifier. As a result, load_fv3gfs_modules.sh
is refactored.
  • Loading branch information
rmontuoro committed Jun 10, 2021
1 parent f81741b commit 0307896
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 46 deletions.
44 changes: 44 additions & 0 deletions ush/get_platform.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/sh

###############################################################
# Auto-detect platform and return string identifier
###############################################################

get_platform() {

local hname=`hostname -d`
local pname="unknown"

if [[ $hname = 'stampede2.tacc.utexas.edu' ]] ; then
# We are on Xsede stampede2
pname="stampede"
elif [[ $hname = 'hpc.msstate.edu' ]] ; then
# We are on MSU Orion
pname="orion"
elif [[ -d /lfs3 ]] ; then
# We are on NOAA Jet
pname="jet"
elif [[ -d /scratch1 ]] ; then
# We are on NOAA Hera
pname="hera.intel"
elif [[ -d /gpfs/hps && -e /etc/SuSE-release ]] ; then
# We are on NOAA Luna or Surge
pname="wcoss_c"
elif [[ -L /usrx && "$( readlink /usrx 2> /dev/null )" =~ dell ]] ; then
# We are on NOAA Mars or Venus
pname="wcoss_dell_p3"
elif [[ -d /dcom && -d /hwrf ]] ; then
# We are on NOAA Tide or Gyre
pname="wcoss"
elif [[ -d /glade ]] ; then
# We are on NCAR Cheyenne
pname="cheyenne"
elif [[ -d /lustre && -d /ncrc ]] ; then
# We are on GAEA.
pname="gaea"
else
echo WARNING: UNKNOWN PLATFORM
fi

echo "${pname}"
}
82 changes: 36 additions & 46 deletions ush/load_fv3gfs_modules.sh
Original file line number Diff line number Diff line change
@@ -1,59 +1,49 @@
#!/bin/sh
#set -x

###############################################################
# Setup runtime environment by loading modules
###############################################################

ulimit_s=$( ulimit -S -s )
#ulimit -S -s 10000

# Find module command and purge:
source "$HOMEgfs/modulefiles/module-setup.sh.inc"
source "$HOMEgfs/ush/get_platform.sh"

# Load our modules:
module use "$HOMEgfs/modulefiles"
hname=`hostname -d`
platform=$( get_platform )

if [[ $hname = 'stampede2.tacc.utexas.edu' ]] ; then
# We are on Xsede stampede2
module load module_base.stampede
elif [[ $hname = 'hpc.msstate.edu' ]] ; then
# We are on MSU Orion
module load module_base.orion
elif [[ -d /lfs3 ]] ; then
# We are on NOAA Jet
module load module_base.jet
elif [[ -d /scratch1 ]] ; then
# We are on NOAA Hera
module use "$HOMEgfs/sorc/ufs_coupled.fd/modulefiles"
module load ufs_hera.intel
if [[ -d $HOMEgfs/sorc/ufs_coupled.fd/GOCART ]] ; then
module load ufs_aerosols_hera.intel
fi
elif [[ -d /work ]] ; then
# We are on MSU Orion
module load module_base.orion
if [[ -d $HOMEgfs/sorc/ufs_coupled.fd/GOCART ]] ; then
module use "$HOMEgfs/sorc/ufs_coupled.fd/modulefiles/orion.intel"
module load fv3
fi
elif [[ -d /gpfs/hps && -e /etc/SuSE-release ]] ; then
# We are on NOAA Luna or Surge
module load module_base.wcoss_c
elif [[ -L /usrx && "$( readlink /usrx 2> /dev/null )" =~ dell ]] ; then
# We are on NOAA Mars or Venus
module load module_base.wcoss_dell_p3
elif [[ -d /dcom && -d /hwrf ]] ; then
# We are on NOAA Tide or Gyre
module load module_base.wcoss
elif [[ -d /glade ]] ; then
# We are on NCAR Yellowstone
module load module_base.cheyenne
elif [[ -d /lustre && -d /ncrc ]] ; then
# We are on GAEA.
module load module_base.gaea
else
echo WARNING: UNKNOWN PLATFORM
fi
moduledir=
modulelist=
case "${platform}" in
hera.intel)
moduledir="$HOMEgfs/sorc/ufs_coupled.fd/modulefiles"
if [[ -r ${moduledir}/${platform}/fv3 ]] ; then
moduledir="$HOMEgfs/sorc/ufs_coupled.fd/modulefiles/${platform}"
modulelist=fv3
elif [[ -r ${moduledir}/ufs_${platform} ]] ; then
modulelist=ufs_${platform}
if [[ "$( grep UFS_GOCART ${HOMEgfs}/sorc/ufs_coupled.fd/build/CMakeCache.txt 2>/dev/null | cut -d= -f2 )" = "ON" ]] ; then
# add aerosols modulefile
modulelist="${modulelist} ufs_aerosols_${platform}"
fi
else
echo "Unable to load modulefiles on ${platform}"
exit 1
fi
;;
unknown)
echo "Unknown platform"
exit 1
;;
*)
moduledir="$HOMEgfs/modulefiles"
modulelist="module_base.${platform}"
;;
esac

# Load our modules:
module use ${moduledir}
module load ${modulelist}

# Restore stack soft limit:
ulimit -S -s "$ulimit_s"
Expand Down

0 comments on commit 0307896

Please sign in to comment.