From b20a4c503a801928f190ad1661f471c7ff7cc7b9 Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 25 Apr 2025 16:28:54 +0000 Subject: [PATCH 1/5] Use build.sh instead of compile.sh for wcoss2 UFS builds (avoid parallel restart reads) --- sorc/build_ufs.sh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index a8bc945826e..10e52e6d9a0 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -57,7 +57,38 @@ 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" ]]; 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" + 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 From 3bf44e70bbc227ab3a4d9910a368444094f3f5a7 Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 25 Apr 2025 18:11:24 +0000 Subject: [PATCH 2/5] Send build.sh the name of the executable --- sorc/build_ufs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 10e52e6d9a0..83911f0641a 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -80,7 +80,7 @@ if [[ "${MACHINE_ID}" == "wcoss2" ]]; then rm -rf "${BUILD_DIR}" fi - BUILD_DIR=${BUILD_DIR} BUILD_VERBOSE=1 BUILD_JOBS=${BUILD_JOBS:-8} CMAKE_FLAGS="${MAKE_OPT}" ./build.sh + BUILD_NAME=${BUILD_NAME} 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" if [[ "${CLEAN_AFTER}" == "YES" ]]; then From 9e56e4e68ec4557ae286dbfdff27e751a8f3abf4 Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 25 Apr 2025 18:58:32 +0000 Subject: [PATCH 3/5] Fix module copy, add parallel restart I/O option --- sorc/build_all.sh | 6 +++++- sorc/build_ufs.sh | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) 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 83911f0641a..55b4d2f7852 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -9,6 +9,9 @@ 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 case "${option}" in @@ -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" @@ -59,7 +63,7 @@ CLEAN_AFTER=NO # 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" ]]; then +if [[ "${MACHINE_ID}" == "wcoss2" && "${PARALLEL_RESTART}" == "NO" ]]; then set +x module use modulefiles module load "ufs_wcoss2.intel" @@ -80,9 +84,10 @@ if [[ "${MACHINE_ID}" == "wcoss2" ]]; then rm -rf "${BUILD_DIR}" fi - BUILD_NAME=${BUILD_NAME} BUILD_DIR=${BUILD_DIR} BUILD_VERBOSE=1 BUILD_JOBS=${BUILD_JOBS:-8} CMAKE_FLAGS="${MAKE_OPT}" ./build.sh + 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 From 25b81adc086de092f35150977037eb7f4299fefc Mon Sep 17 00:00:00 2001 From: David Huber Date: Fri, 25 Apr 2025 19:33:16 +0000 Subject: [PATCH 4/5] Add p to getopts list --- sorc/build_ufs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 55b4d2f7852..51f321f0738 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -13,7 +13,7 @@ EXEC_NAME="gfs_model.x" # 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}";; From cc13e2bae6d2a58e6b4410425c3c746d682d0b3a Mon Sep 17 00:00:00 2001 From: David Huber Date: Mon, 28 Apr 2025 14:56:47 +0000 Subject: [PATCH 5/5] Disable C384_S2SWA on all platforms --- dev/ci/cases/weekly/C384_S2SWA.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) 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