From af62bd26f1d996b773d2ebfd2a18c8dce803cf2f Mon Sep 17 00:00:00 2001 From: Michael Kavulich Date: Thu, 31 Mar 2022 15:49:23 -0600 Subject: [PATCH] Add ability to compile script to use non-intel compilers; add Cheyenne modulefiles for gnu and intel (#468) * Add cheyenne modulefile * Intel 19 --> 2021 * Add ability to specify compiler; move all existing modulefiles to ${name}_intel since they are all for intel compilers; add "cheyenne_gnu" modulefile * Revert move of intel modulefiles; now the implicit default for a modulefile is intel, only gnu and other compilers will have the compiler name appended to the modulefile * Allow for lua modulefiles with ".lua" appended --- modulefiles/cheyenne | 40 +++++++++++++++++++++++++++++++++++++++ modulefiles/cheyenne_gnu | 41 ++++++++++++++++++++++++++++++++++++++++ tests/compile_upp.sh | 28 ++++++++++++++++++++------- 3 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 modulefiles/cheyenne create mode 100644 modulefiles/cheyenne_gnu diff --git a/modulefiles/cheyenne b/modulefiles/cheyenne new file mode 100644 index 000000000..75ae507e5 --- /dev/null +++ b/modulefiles/cheyenne @@ -0,0 +1,40 @@ +#%Module# + +proc ModulesHelp { } { +puts stderr "Loads modules required for building upp" +} +module-whatis "Loads UPP prerequisites on Cheyenne for Intel 2021.2" + +module purge + +module load cmake/3.18.2 +module load ncarenv/1.3 +module load intel/2021.2 +module load mpt/2.22 +module load ncarcompilers/0.5.0 +module unload netcdf + +module use /glade/p/ral/jntp/GMTB/tools/hpc-stack-v1.2.0/modulefiles/stack +module load hpc/1.2.0 +module load hpc-intel/2021.2 +module load hpc-mpt/2.22 + +module load jasper/2.0.25 +module load zlib/1.2.11 +module load png/1.6.35 + +module load hdf5/1.10.6 +module load netcdf/4.7.4 + +module load bacio/2.4.1 +module load crtm/2.3.0 +module load g2/3.4.2 +module load g2tmpl/1.10.0 +module load ip/3.3.3 +module load nemsio/2.5.2 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load sp/2.3.3 +module load w3nco/2.4.1 +module load w3emc/2.7.3 +module load wrf_io/1.2.0 diff --git a/modulefiles/cheyenne_gnu b/modulefiles/cheyenne_gnu new file mode 100644 index 000000000..c7dbc8e18 --- /dev/null +++ b/modulefiles/cheyenne_gnu @@ -0,0 +1,41 @@ +#%Module# + +proc ModulesHelp { } { +puts stderr "Loads modules required for building upp" +} +module-whatis "Loads UPP prerequisites on Cheyenne for Intel 2021.2" + +module purge + +module load cmake/3.18.2 +module load ncarenv/1.3 +module load gnu/10.1.0 +module load mpt/2.22 +module load ncarcompilers/0.5.0 +module load python/3.7.9 +module unload netcdf + +module use /glade/p/ral/jntp/GMTB/tools/hpc-stack-v1.2.0/modulefiles/stack +module load hpc/1.2.0 +module load hpc-gnu/10.1.0 +module load hpc-mpt/2.22 + +module load jasper/2.0.25 +module load zlib/1.2.11 +module load png/1.6.35 + +module load hdf5/1.10.6 +module load netcdf/4.7.4 + +module load bacio/2.4.1 +module load crtm/2.3.0 +module load g2/3.4.2 +module load g2tmpl/1.10.0 +module load ip/3.3.3 +module load nemsio/2.5.2 +module load sfcio/1.4.1 +module load sigio/2.3.2 +module load sp/2.3.3 +module load w3nco/2.4.1 +module load w3emc/2.7.3 +module load wrf_io/1.2.0 diff --git a/tests/compile_upp.sh b/tests/compile_upp.sh index 7e9a9d310..2c20f660c 100755 --- a/tests/compile_upp.sh +++ b/tests/compile_upp.sh @@ -7,12 +7,13 @@ set -eu usage() { echo - echo "Usage: $0 [-g] [-w] -h" + echo "Usage: $0 [-p] [-g] [-w] [-v] [-c] -h" echo echo " -p installation prefix DEFAULT: ../install" - echo " -g Build with GTG(users with gtg repos. access only) DEFAULT: OFF" - echo " -w Build without WRF-IO DEFAULT: ON" - echo " -v Build with cmake verbose DEFAULT: NO" + echo " -g build with GTG(users with gtg repos. access only) DEFAULT: OFF" + echo " -w build without WRF-IO DEFAULT: ON" + echo " -v build with cmake verbose DEFAULT: NO" + echo " -c Compiler to use for build DEFAULT: intel" echo " -h display this message and quit" echo exit 1 @@ -21,8 +22,9 @@ usage() { prefix="../install" gtg_opt=" -DBUILD_WITH_GTG=OFF" wrfio_opt=" -DBUILD_WITH_WRFIO=ON" +compiler="intel" verbose_opt="" -while getopts ":p:gwvh" opt; do +while getopts ":p:gwc:vh" opt; do case $opt in p) prefix=$OPTARG @@ -33,6 +35,9 @@ while getopts ":p:gwvh" opt; do w) wrfio_opt=" -DBUILD_WITH_WRFIO=OFF" ;; + c) + compiler=$OPTARG + ;; v) verbose_opt="VERBOSE=1" ;; @@ -43,7 +48,6 @@ while getopts ":p:gwvh" opt; do done cmake_opts=" -DCMAKE_INSTALL_PREFIX=$prefix"${wrfio_opt}${gtg_opt} -hostname source ./detect_machine.sh if [[ $(uname -s) == Darwin ]]; then readonly MYDIR=$(cd "$(dirname "$(greadlink -f -n "${BASH_SOURCE[0]}" )" )" && pwd -P) @@ -60,7 +64,17 @@ if [[ $MACHINE_ID != "unknown" ]]; then module purge fi module use $PATHTR/modulefiles - modulefile=${MACHINE_ID} + if [[ $compiler == "intel" ]]; then + modulefile=${MACHINE_ID} + else + modulefile=${MACHINE_ID}_${compiler} + fi + if [ -f "${PATHTR}/modulefiles/${modulefile}" -o -f "${PATHTR}/modulefiles/${modulefile}.lua" ]; then + echo "Building for machine ${MACHINE_ID}, compiler ${compiler}" + else + echo "Modulefile does not exist for machine ${MACHINE_ID}, compiler ${compiler}" + exit 1 + fi module load $modulefile module list fi