diff --git a/dev/ci/cases/weekly/C384_S2SWA.yaml b/dev/ci/cases/weekly/C384_S2SWA.yaml index f509e4556de..81ddb6b7974 100644 --- a/dev/ci/cases/weekly/C384_S2SWA.yaml +++ b/dev/ci/cases/weekly/C384_S2SWA.yaml @@ -13,3 +13,13 @@ arguments: idate: 2016070100 edate: 2016070100 yaml: {{ HOMEgfs }}/dev/ci/cases/yamls/gfs_defaults_ci.yaml + +# ICs are not currently available for this test. +skip_ci_on_hosts: + - gaeac6 + - gaeac5 + - hercules + - wcoss2 + - hera + - orion + - awsepicglobalworkflow diff --git a/sorc/build_all.sh b/sorc/build_all.sh index 13d7c9c78b1..66b751a35a9 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -28,6 +28,8 @@ Usage: ${BASH_SOURCE[0]} [-a UFS_app][-c build_config][-d][-f][-h][-v] [gfs] [ge Kill all builds if any build fails -v: Execute all build scripts with -v option to turn on verbose where supported + -p: + Valid only for WCOSS2; enable parallel restart I/O when compiling the UFS Specified systems (gfs, gefs, sfs, gsi, gdas) are non-exclusive, so they can be built together. EOF @@ -46,13 +48,15 @@ _quick_kill="NO" _ufs_exec="-e gfs_model.x" # Reset option counter in case this script is sourced OPTIND=1 -while getopts ":a:dfhkv" option; do +while getopts ":a:dfhkpv" option; do case "${option}" in a) _build_ufs_opt+="-a ${OPTARG} ";; f) _build_ufs_opt+="-f ";; d) _build_debug="-d" ;; h) _usage;; k) _quick_kill="YES" ;; + # TODO: Remove this option when UFS#2716 is fixed + p) _build_ufs_opt+="-p ";; v) _verbose_opt="-v" ;; :) echo "[${BASH_SOURCE[0]}]: ${option} requires an argument" diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index a8bc945826e..51f321f0738 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -9,8 +9,11 @@ CCPP_SUITES="FV3_GFS_v17_p8_ugwpv1,FV3_GFS_v17_coupled_p8_ugwpv1,FV3_global_nest PDLIB="ON" HYDRO="OFF" EXEC_NAME="gfs_model.x" +# Valid only for WCOSS2; enable parallel restart I/O +# TODO: Remove this option when ufs-weather-model#2716 is fixed +PARALLEL_RESTART="NO" -while getopts ":da:fj:e:vwy" option; do +while getopts ":da:fj:e:pvwy" option; do case "${option}" in d) BUILD_TYPE="DEBUG";; a) APP="${OPTARG}";; @@ -19,6 +22,7 @@ while getopts ":da:fj:e:vwy" option; do v) export BUILD_VERBOSE="YES";; w) PDLIB="OFF";; y) HYDRO="ON";; + p) PARALLEL_RESTART="YES";; e) EXEC_NAME="${OPTARG}";; :) echo "[${BASH_SOURCE[0]}]: ${option} requires an argument" @@ -57,7 +61,39 @@ esac CLEAN_BEFORE=YES CLEAN_AFTER=NO -BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_ID}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" +# The test/compile.sh script adds " -DENABLE_PARALLELRESTART=ON" when compiling on WCOSS2, which is causing issues +# TODO: when ufs-weather-model#2716 is fixed, return to using tests/compile.sh +if [[ "${MACHINE_ID}" == "wcoss2" && "${PARALLEL_RESTART}" == "NO" ]]; then + set +x + module use modulefiles + module load "ufs_wcoss2.intel" + module list + set -x + + if [[ ${MAKE_OPT} == *-DDEBUG=ON* ]]; then + MAKE_OPT+=" -DCMAKE_BUILD_TYPE=Debug" + else + MAKE_OPT+=" -DCMAKE_BUILD_TYPE=Release" + fi + + MAKE_OPT+=" -DMPI=ON" + + BUILD_NAME="fv3_${COMPILE_ID}" + BUILD_DIR="$(pwd)/build_${BUILD_NAME}" + if [[ "${CLEAN_BEFORE}" == "YES" ]]; then + rm -rf "${BUILD_DIR}" + fi + + BUILD_DIR=${BUILD_DIR} BUILD_VERBOSE=1 BUILD_JOBS=${BUILD_JOBS:-8} CMAKE_FLAGS="${MAKE_OPT}" ./build.sh + + mv "${BUILD_DIR}/ufs_model" "tests/${BUILD_NAME}.exe" + cp modulefiles/ufs_wcoss2.intel.lua "tests/modules.${BUILD_NAME}.lua" + if [[ "${CLEAN_AFTER}" == "YES" ]]; then + rm -rf "${BUILD_DIR}" + fi +else + BUILD_JOBS=${BUILD_JOBS:-8} ./tests/compile.sh "${MACHINE_ID}" "${MAKE_OPT}" "${COMPILE_ID}" "intel" "${CLEAN_BEFORE}" "${CLEAN_AFTER}" +fi mv "./tests/fv3_${COMPILE_ID}.exe" "./tests/${EXEC_NAME}" if [[ ! -f "./tests/modules.ufs_model.lua" ]]; then mv "./tests/modules.fv3_${COMPILE_ID}.lua" "./tests/modules.ufs_model.lua"; fi if [[ ! -f "./tests/ufs_common.lua" ]]; then cp "./modulefiles/ufs_common.lua" ./tests/ufs_common.lua; fi