From f66733c281ef23126c4326951d34cf0e398e018f Mon Sep 17 00:00:00 2001 From: Chris Fischer Date: Wed, 16 Aug 2023 15:36:46 -0600 Subject: [PATCH 01/17] Add derecho support. --- test/system/test_driver.sh | 81 +++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index 964f647793..748c6ab894 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -273,6 +273,63 @@ EOF ##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ writing to batch script ^^^^^^^^^^^^^^^^^^^ ;; + ##derecho + derecho* | dec* ) + submit_script_cime="`pwd -P`/test_driver_derecho_cime_${cur_time}.sh" + + if [ -z "$CAM_ACCOUNT" ]; then + echo "ERROR: Must set the environment variable CAM_ACCOUNT" + exit 2 + fi + + if [ -z "$CAM_BATCHQ" ]; then + export CAM_BATCHQ="main" + fi + + # wallclock for run job + wallclock_limit="5:00:00" + + if [ $gmake_j = 0 ]; then + gmake_j=128 + fi + + # run tests on 1 node using 64 tasks/node, 2 threads/task + # These settings are ignored on cheyenne and derecho. + # PE layouts come from config_pes.xml. + CAM_TASKS=64 + CAM_THREADS=2 + + # change parallel configuration on 1 nodes using 32 tasks, 1 threads/task + # These settings are ignored on cheyenne and derecho. + # PE layouts come from config_pes.xml. + CAM_RESTART_TASKS=32 + CAM_RESTART_THREADS=1 + + mach_workspace="/glade/derecho/scratch" + + # Check for CESM baseline directory + if [ -n "${BL_TESTDIR}" ] && [ ! -d "${BL_TESTDIR}" ]; then + echo "CESM_BASELINE ${BL_TESTDIR} not found. Check BL_TESTDIR for correct tag name." + exit + fi + +#------------------------------------------- + +cat > ${submit_script_cime} << EOF +#!/bin/bash +# +#PBS -N cime-tests +#PBS -q $CAM_BATCHQ +#PBS -A $CAM_ACCOUNT +#PBS -l walltime=4:00:00 +#PBS -l select=1:ncpus=128:mpiprocs=128 +#PBS -j oe + +EOF + +##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ writing to batch script ^^^^^^^^^^^^^^^^^^^ + ;; + ##hobart hob* | h[[:digit:]]* ) @@ -451,6 +508,9 @@ comp="" if [ "${hostname:0:4}" == "chey" ]; then cesm_test_mach="cheyenne" fi +if [ "${hostname:0:5}" == "derec" ] || [ "${hostname:0:3}" == "dec" ]; then + cesm_test_mach="derecho" +fi if [ "${hostname:0:6}" == "hobart" ]; then cesm_test_mach="hobart" fi @@ -471,7 +531,14 @@ if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then for cesm_test in ${cesm_test_suite}; do - testargs="--xml-category ${cesm_test} --xml-machine ${cesm_test_mach} --retry 2" + # Force derecho to run the cheyenne testlist. + # After the transition to derecho is completed, this if statement can be removed and + # just the else needs to remain. + if [ "${cesm_test_mach}" == "derecho" ]; then + testargs="--xml-category ${cesm_test} --xml-machine cheyenne --mach ${cesm_test_mach} --retry 2" + else + testargs="--xml-category ${cesm_test} --xml-machine ${cesm_test_mach} --retry 2" + fi if [ -n "${use_existing}" ]; then test_id="${use_existing}" @@ -551,6 +618,10 @@ if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then chey* | r* ) testargs="${testargs} --queue ${CAM_BATCHQ} --test-root ${cesm_testdir} --output-root ${cesm_testdir}" ;; + # derecho + derc* | dec* ) + testargs="${testargs} --queue ${CAM_BATCHQ} --test-root ${cesm_testdir} --output-root ${cesm_testdir}" + ;; # casper casper* | crhtc* ) testargs="${testargs} --queue ${CAM_BATCHQ} --test-root ${cesm_testdir} --output-root ${cesm_testdir}" @@ -631,6 +702,14 @@ if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then qsub ${submit_script_cime} fi + if [ "${hostname:0:2}" == "de" ]; then + echo "cd ${script_dir}" >> ${submit_script_cime} + echo "module load python" >> ${submit_script_cime} + echo './create_test' ${testargs} >> ${submit_script_cime} + chmod u+x ${submit_script_cime} + qsub ${submit_script_cime} + fi + if [ "${hostname:0:6}" == "hobart" ]; then echo "cd ${script_dir}" >> ${submit_script_cime} echo './create_test' ${testargs} >> ${submit_script_cime} From 84fa58e7e9d6d5618fdd8d6f331e0d87c5f73494 Mon Sep 17 00:00:00 2001 From: Chris Fischer Date: Wed, 20 Sep 2023 11:55:18 -0600 Subject: [PATCH 02/17] Add non-zero exit code to check for baselines. --- test/system/test_driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index 748c6ab894..e8338ac54a 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -310,7 +310,7 @@ EOF # Check for CESM baseline directory if [ -n "${BL_TESTDIR}" ] && [ ! -d "${BL_TESTDIR}" ]; then echo "CESM_BASELINE ${BL_TESTDIR} not found. Check BL_TESTDIR for correct tag name." - exit + exit 3 fi #------------------------------------------- From 5fde6371a62a863a118c327e59bc273b01e752f4 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 20 Sep 2023 13:14:01 -0600 Subject: [PATCH 03/17] Bring in test_driver and externals --- Externals.cfg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 9badad437d..7dfd41a073 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -1,5 +1,5 @@ [ccs_config] -tag = ccs_config_cesm0.0.73 +tag = ccs_config_cesm0.0.78 protocol = git repo_url = https://github.com/ESMCI/ccs_config_cesm local_path = ccs_config @@ -13,7 +13,7 @@ local_path = components/cice5 required = True [cice6] -tag = cesm_cice6_4_1_8 +tag = cesm_cice6_4_1_10 protocol = git repo_url = https://github.com/ESCOMP/CESM_CICE local_path = components/cice @@ -21,14 +21,14 @@ externals = Externals.cfg required = True [cmeps] -tag = cmeps0.14.34 +tag = cmeps0.14.39 protocol = git repo_url = https://github.com/ESCOMP/CMEPS.git local_path = components/cmeps required = True [cdeps] -tag = cdeps1.0.14 +tag = cdeps1.0.21 protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git local_path = components/cdeps @@ -36,7 +36,7 @@ externals = Externals_CDEPS.cfg required = True [cpl7] -tag = cpl77.0.5 +tag = cpl77.0.6 protocol = git repo_url = https://github.com/ESCOMP/CESM_CPL7andDataComps local_path = components/cpl7 @@ -57,21 +57,21 @@ local_path = libraries/mct required = True [parallelio] -tag = pio2_5_10 +tag = pio2_6_2 protocol = git repo_url = https://github.com/NCAR/ParallelIO local_path = libraries/parallelio required = True [cime] -tag = cime6.0.125 +tag = cime6.0.156 protocol = git repo_url = https://github.com/ESMCI/cime local_path = cime required = True [cism] -tag = cismwrap_2_1_95 +tag = cismwrap_2_1_96 protocol = git repo_url = https://github.com/ESCOMP/CISM-wrapper local_path = components/cism @@ -79,7 +79,7 @@ externals = Externals_CISM.cfg required = True [clm] -tag = ctsm5.1.dev124 +tag = ctsm5.1.dev139 protocol = git repo_url = https://github.com/ESCOMP/CTSM local_path = components/clm From 91b1959e31c630ebd256f0c58fba4abca795cdba Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 20 Sep 2023 15:04:53 -0600 Subject: [PATCH 04/17] Update HEMCO external --- Externals_CAM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CAM.cfg b/Externals_CAM.cfg index 0770c68211..50ba33d973 100644 --- a/Externals_CAM.cfg +++ b/Externals_CAM.cfg @@ -78,7 +78,7 @@ required = True [hemco] local_path = src/hemco -tag = hemco-cesm1_2_0_hemco3_6_2_cesm +tag = hemco-cesm1_2_0_hemco3_6_3_cesm protocol = git repo_url = https://github.com/ESCOMP/HEMCO_CESM.git required = True From dbaca4140c020683bf74779e90d481f84f609eae Mon Sep 17 00:00:00 2001 From: Chris Fischer Date: Wed, 20 Sep 2023 16:54:58 -0600 Subject: [PATCH 05/17] Use wallclock_limit for derecho walltime. --- test/system/test_driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index e8338ac54a..4b5b05b456 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -321,7 +321,7 @@ cat > ${submit_script_cime} << EOF #PBS -N cime-tests #PBS -q $CAM_BATCHQ #PBS -A $CAM_ACCOUNT -#PBS -l walltime=4:00:00 +#PBS -l walltime=$wallclock_limit #PBS -l select=1:ncpus=128:mpiprocs=128 #PBS -j oe From 70108b1e67366a7d4468bead7e48384909a7373b Mon Sep 17 00:00:00 2001 From: Chris Fischer Date: Wed, 20 Sep 2023 16:58:43 -0600 Subject: [PATCH 06/17] Use wallclock_limit for cheyenne and casper walltime. --- test/system/test_driver.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index 4b5b05b456..1a9ecb367e 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -264,7 +264,7 @@ cat > ${submit_script_cime} << EOF #PBS -N cime-tests #PBS -q $CAM_BATCHQ #PBS -A $CAM_ACCOUNT -#PBS -l walltime=4:00:00 +#PBS -l walltime=$wallclock_limit #PBS -l select=1:ncpus=36:mpiprocs=36 #PBS -j oe #PBS -l inception=login @@ -488,7 +488,7 @@ cat > ${submit_script_cime} << EOF #PBS -N cime-tests #PBS -q $CAM_BATCHQ #PBS -A $CAM_ACCOUNT -#PBS -l walltime=2:00:00 +#PBS -l walltime=$wallclock_limit #PBS -l select=1:ncpus=36:mpiprocs=36:mem=300GB #PBS -j oe #PBS -V From 37c6f28b9a8a7cf08d98c8ab8f3ae47edb02e526 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Thu, 21 Sep 2023 11:29:51 -0600 Subject: [PATCH 07/17] Add missing character --- test/system/test_driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index 1a9ecb367e..10ef3913d3 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -619,7 +619,7 @@ if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then testargs="${testargs} --queue ${CAM_BATCHQ} --test-root ${cesm_testdir} --output-root ${cesm_testdir}" ;; # derecho - derc* | dec* ) + derec* | dec* ) testargs="${testargs} --queue ${CAM_BATCHQ} --test-root ${cesm_testdir} --output-root ${cesm_testdir}" ;; # casper From ce5989c6005bec71d0037fbc02a2e7d22c9910b9 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Thu, 21 Sep 2023 15:15:46 -0600 Subject: [PATCH 08/17] Fix typo in HEMCO tagname --- Externals_CAM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CAM.cfg b/Externals_CAM.cfg index 50ba33d973..bfba41d0db 100644 --- a/Externals_CAM.cfg +++ b/Externals_CAM.cfg @@ -78,7 +78,7 @@ required = True [hemco] local_path = src/hemco -tag = hemco-cesm1_2_0_hemco3_6_3_cesm +tag = hemco-cesm1_2_1_hemco3_6_3_cesm protocol = git repo_url = https://github.com/ESCOMP/HEMCO_CESM.git required = True From 48199e4d411474858be6f7342c5aa9a640ea3f62 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Thu, 21 Sep 2023 15:51:16 -0600 Subject: [PATCH 09/17] Remove python from derecho submits --- test/system/test_driver.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/system/test_driver.sh b/test/system/test_driver.sh index 10ef3913d3..a80121753d 100755 --- a/test/system/test_driver.sh +++ b/test/system/test_driver.sh @@ -525,7 +525,7 @@ if [ -n "${CAM_FC}" ]; then fi if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then - if [ "${hostname:0:5}" != "izumi" ]; then + if [ "${hostname:0:5}" != "izumi" ] && [ "${hostname:0:7}" != "derecho" ]; then module load python fi @@ -704,7 +704,6 @@ if [ "${cesm_test_suite}" != "none" -a -n "${cesm_test_mach}" ]; then if [ "${hostname:0:2}" == "de" ]; then echo "cd ${script_dir}" >> ${submit_script_cime} - echo "module load python" >> ${submit_script_cime} echo './create_test' ${testargs} >> ${submit_script_cime} chmod u+x ${submit_script_cime} qsub ${submit_script_cime} From a1474d95162d7bc3a0c1d4012d6919b3db18fbe5 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 22 Sep 2023 11:52:07 -0600 Subject: [PATCH 10/17] Preliminary ChangeLog --- doc/ChangeLog | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 2397b96619..6fad3019d9 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,62 @@ + +=============================================================== + +Tag name: cam6_3_129 +Originator(s): cacraig, fischer, hplin +Date: Sept 22, 2023 +One-line Summary: Update externals to match cecm2_3_alpha16d and bring in test_driver which supports derecho +Github PR URL: https://github.com/ESCOMP/CAM/pull/888 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + - Add derecho support to test_driver (https://github.com/ESCOMP/CAM/pull/879) + - Fix long line in HEMCO external (https://github.com/ESCOMP/CAM/issues/871) + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: N/A + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: nusbaume, jet, fvitt + +List all files eliminated: N/A + +List all files added and what they do: N/A + +List all existing files that have been modified, and describe the changes: + +M Externals.cfg + - update externals to match cesm2_3_alpha16d (ccs_config external is one tag newer) + +M Externals_CAM.cfg + - update HEMCO tag to get fix for line too long + +M test/system/test_driver.sh + - add derecho functionality (uses cheyenne aux_cam hooks to determine tests to run) + It is important to note that there a number of failures when the tests are run on derecho (see + github issue #XXXXXXXXXXXXXXXXXXXXXXXXXX for details + + +If there were any failures reported from running test_driver.sh on any test +platform, and checkin with these failures has been OK'd by the gatekeeper, +then copy the lines from the td.*.status files for the failed tests to the +appropriate machine below. All failed tests must be justified. + +cheyenne/intel/aux_cam: + +izumi/nag/aux_cam: + DAE_Vnuopc.f45_f45_mg37.FHS94.izumi_nag.cam-dae (Overall: FAIL) details: + - pre-existing failure + +izumi/gnu/aux_cam: + SMS_D_Ln9.f10_f10_mg37.2000_CAM%DEV%GHGMAM4_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV_SESP.izumi_gnu.cam-outfrq9s (Overall: DIFF) details: + SMS_P48x1_D_Ln9_Vnuopc.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s (Overall: DIFF) details: + - answer changes due to updated externals + + +=============================================================== =============================================================== Tag name: cam6_3_128 From 5af0cde5b9813a62f1853a4846bb1c28260b3eef Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Wed, 27 Sep 2023 09:44:55 -0600 Subject: [PATCH 11/17] update buildlib to allow cesm to build fms for shared use. Previously cam was responsible for building libfms --- cime_config/buildlib | 91 ++++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 42 deletions(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index 90322da1ac..a10f2a272d 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -3,11 +3,12 @@ """ create the cam library """ -#pylint: disable=multiple-imports, wrong-import-position, wildcard-import -#pylint: disable=unused-wildcard-import, bad-whitespace, too-many-locals -#pylint: disable=invalid-name +# pylint: disable=multiple-imports, wrong-import-position, wildcard-import +# pylint: disable=unused-wildcard-import, bad-whitespace, too-many-locals +# pylint: disable=invalid-name import sys, os, filecmp, shutil, imp + _CIMEROOT = os.environ.get("CIMEROOT") if _CIMEROOT is None: raise SystemExit("ERROR: must set CIMEROOT environment variable") @@ -17,51 +18,27 @@ sys.path.append(_LIBDIR) from standard_script_setup import * from CIME.case import Case -from CIME.utils import run_cmd, expect +from CIME.utils import run_sub_or_cmd, expect, run_cmd from CIME.buildlib import parse_input from CIME.build import get_standard_makefile_args logger = logging.getLogger(__name__) -############################################################################### -def _build_fms(caseroot, libroot, bldroot): -############################################################################### - - with Case(caseroot) as case: - - # Only need FMS for fv3 dycore - cam_dycore = case.get_value("CAM_DYCORE") - if cam_dycore == 'fv3': - # Check to see if some other component built it already - if not os.path.exists(os.path.join(libroot,"libfms.a")): - # first check for the external FMS library and build it - srcroot = case.get_value("SRCROOT") - fmsbuildlib = os.path.join(srcroot,"libraries","FMS","buildlib") - fmsbuilddir = os.path.join(case.get_value("EXEROOT"),"FMS") - expect(os.path.exists(fmsbuildlib), "FMS external not found") - stat, _, err = run_cmd("{} {} {} {}".format(fmsbuildlib, case.get_value("EXEROOT"), fmsbuilddir, caseroot), verbose=True) - expect(stat==0, "FMS build Failed {}".format(err)) - - libfms = os.path.join(bldroot,"FMS","libfms.a") - if os.path.exists(libfms): - shutil.copy(libfms, libroot) - ############################################################################### def _build_cam(caseroot, libroot, bldroot): -############################################################################### + ############################################################################### with Case(caseroot, read_only=False) as case: srcroot = case.get_value("SRCROOT") - #------------------------------------------------------- + # ------------------------------------------------------- # Call cam's buildcpp - #------------------------------------------------------- + # ------------------------------------------------------- testpath = os.path.join(srcroot, "components", "cam") if os.path.exists(testpath): srcroot = testpath - cmd = os.path.join(os.path.join(srcroot, - "cime_config", "buildcpp")) + cmd = os.path.join(os.path.join(srcroot, "cime_config", "buildcpp")) logger.info(" ...calling cam buildcpp to set build time options") try: mod = imp.load_source("buildcpp", cmd) @@ -76,16 +53,32 @@ def _build_cam(caseroot, libroot, bldroot): gmake_j = case.get_value("GMAKE_J") gmake = case.get_value("GMAKE") mach = case.get_value("MACH") - - #------------------------------------------------------- + user_incldir = None + cam_dycore = case.get_value("CAM_DYCORE") + if cam_dycore == "fv3": + slr = os.path.abspath(case.get_value("SHAREDLIBROOT")) + compiler = case.get_value("COMPILER") + mpilib = case.get_value("MPILIB") + debug = "debug" if case.get_value("DEBUG") else "nodebug" + threaded = "threads" if case.get_value("BUILD_THREADED") else "nothreads" + comp_interface = case.get_value("COMP_INTERFACE") + fmsbuilddir = os.path.join( + slr, compiler, mpilib, debug, threaded, comp_interface) + user_incldir = '"-I{} -I{} -I{}"'.format( + os.path.join(srcroot, "libraries", "FMS", "src", "include"), + os.path.join(srcroot, "libraries", "FMS", "src", "mpp", "include"), + fmsbuilddir, + ) + + # ------------------------------------------------------- # Filepath is created in caseroot/camconf by the call # to buildcpp - this needs to be copied to bldroot - #------------------------------------------------------- + # ------------------------------------------------------- filesrc = os.path.join(caseroot, "Buildconf", "camconf", "Filepath") filedst = os.path.join(bldroot, "Filepath_tmp") shutil.copy(filesrc, filedst) - filedst = os.path.join(bldroot, "Filepath") + filedst = os.path.join(bldroot, "Filepath") filedst_tmp = os.path.join(bldroot, "Filepath_tmp") if os.path.isfile(filedst): if not filecmp.cmp(filedst_tmp, filedst): @@ -93,28 +86,42 @@ def _build_cam(caseroot, libroot, bldroot): else: shutil.move(filedst_tmp, filedst) - #------------------------------------------------------- + # ------------------------------------------------------- + # fms is needd by fv3 and should have been built by the framework + # ------------------------------------------------------- + libfms = os.path.join(fmsbuilddir, "libfms.a") + expect(os.path.isfile(libfms), + " Missing config_cache.xml - cannot run build-namelist") + shutil.copy(libfms, libroot) + + # ------------------------------------------------------- # build the library - #------------------------------------------------------- - complib = os.path.join(libroot, "libatm.a") + # ------------------------------------------------------- + complib = os.path.join(libroot, "libatm.a") makefile = os.path.join(casetools, "Makefile") - cmd = "{} complib -j {} COMP_NAME=cam COMPLIB={} -f {} {} " \ - .format(gmake, gmake_j, complib, makefile, get_standard_makefile_args(case)) + cmd = "{} complib -j {} COMP_NAME=cam COMPLIB={} -f {} {} ".format( + gmake, gmake_j, complib, makefile, get_standard_makefile_args(case) + ) if cam_cppdefs: cmd += " USER_CPPDEFS='{}'".format(cam_cppdefs) + if user_incldir: + cmd += " USER_INCLDIR={}".format(user_incldir) + rc, out, err = run_cmd(cmd) logger.info("%s: \n\n output:\n %s \n\n err:\n\n%s\n", cmd, out, err) expect(rc == 0, "Command %s failed with rc=%s" % (cmd, rc)) + ############################################################################### + def _main_func(): caseroot, libroot, bldroot = parse_input(sys.argv) - _build_fms(caseroot, libroot, bldroot) _build_cam(caseroot, libroot, bldroot) + ############################################################################### if __name__ == "__main__": From 74484a948d4afae82b87b4cc8228246a355bb2a5 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 27 Sep 2023 10:05:08 -0600 Subject: [PATCH 12/17] minor text updates --- cime_config/buildlib | 2 +- doc/ChangeLog | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index a10f2a272d..c885885222 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -87,7 +87,7 @@ def _build_cam(caseroot, libroot, bldroot): shutil.move(filedst_tmp, filedst) # ------------------------------------------------------- - # fms is needd by fv3 and should have been built by the framework + # fms is needed by fv3 and should have been built by the framework # ------------------------------------------------------- libfms = os.path.join(fmsbuilddir, "libfms.a") expect(os.path.isfile(libfms), diff --git a/doc/ChangeLog b/doc/ChangeLog index 6fad3019d9..82e6cac610 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,14 +2,15 @@ =============================================================== Tag name: cam6_3_129 -Originator(s): cacraig, fischer, hplin -Date: Sept 22, 2023 +Originator(s): cacraig, fischer, hplin, jet +Date: Sept 28, 2023 One-line Summary: Update externals to match cecm2_3_alpha16d and bring in test_driver which supports derecho Github PR URL: https://github.com/ESCOMP/CAM/pull/888 Purpose of changes (include the issue number and title text for each relevant GitHub issue): - Add derecho support to test_driver (https://github.com/ESCOMP/CAM/pull/879) - Fix long line in HEMCO external (https://github.com/ESCOMP/CAM/issues/871) + - Fix building older FMS library (no issue as was discovered during testing, but discussion is in PR#888) Describe any changes made to build system: N/A @@ -33,12 +34,16 @@ M Externals.cfg M Externals_CAM.cfg - update HEMCO tag to get fix for line too long +M cime_config/buildlib + - Updates for building older FMS library (required with changes in external) + M test/system/test_driver.sh - add derecho functionality (uses cheyenne aux_cam hooks to determine tests to run) It is important to note that there a number of failures when the tests are run on derecho (see github issue #XXXXXXXXXXXXXXXXXXXXXXXXXX for details + If there were any failures reported from running test_driver.sh on any test platform, and checkin with these failures has been OK'd by the gatekeeper, then copy the lines from the td.*.status files for the failed tests to the From c80928df23743d198d0881a5199886e1405bc190 Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Wed, 27 Sep 2023 11:54:27 -0600 Subject: [PATCH 13/17] fix err msg wording for missing libfms library. --- cime_config/buildlib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index c885885222..223a2a3a79 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -91,7 +91,7 @@ def _build_cam(caseroot, libroot, bldroot): # ------------------------------------------------------- libfms = os.path.join(fmsbuilddir, "libfms.a") expect(os.path.isfile(libfms), - " Missing config_cache.xml - cannot run build-namelist") + "err: Missing the FMS library libfms.a - cannot complete CAM build") shutil.copy(libfms, libroot) # ------------------------------------------------------- From 2d6fbd75c3497bd0bb0efbe9ccb660a72e7f6af4 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 27 Sep 2023 14:35:12 -0600 Subject: [PATCH 14/17] Add missing if statement --- cime_config/buildlib | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index 223a2a3a79..39e190eba5 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -89,10 +89,11 @@ def _build_cam(caseroot, libroot, bldroot): # ------------------------------------------------------- # fms is needed by fv3 and should have been built by the framework # ------------------------------------------------------- - libfms = os.path.join(fmsbuilddir, "libfms.a") - expect(os.path.isfile(libfms), - "err: Missing the FMS library libfms.a - cannot complete CAM build") - shutil.copy(libfms, libroot) + if cam_dycore == "fv3": + libfms = os.path.join(fmsbuilddir, "libfms.a") + expect(os.path.isfile(libfms), + "err: Missing the FMS library libfms.a - cannot complete CAM build") + shutil.copy(libfms, libroot) # ------------------------------------------------------- # build the library From b6c1e7a0f3ee8e75e4b81a99b18bfcc362122acf Mon Sep 17 00:00:00 2001 From: James Edwards Date: Thu, 28 Sep 2023 11:48:59 -0600 Subject: [PATCH 15/17] fix for ERP test of fvcubed dycore --- cime_config/buildlib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index 39e190eba5..bf823e9e2e 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -60,7 +60,7 @@ def _build_cam(caseroot, libroot, bldroot): compiler = case.get_value("COMPILER") mpilib = case.get_value("MPILIB") debug = "debug" if case.get_value("DEBUG") else "nodebug" - threaded = "threads" if case.get_value("BUILD_THREADED") else "nothreads" + threaded = "threads" if case.get_value("BUILD_THREADED") or case.get_value("FORCE_BUILD_SMP") else "nothreads" comp_interface = case.get_value("COMP_INTERFACE") fmsbuilddir = os.path.join( slr, compiler, mpilib, debug, threaded, comp_interface) From 769f2d03aacc8cd4a292f17bd90f43dc80b4321f Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Fri, 29 Sep 2023 15:19:07 -0600 Subject: [PATCH 16/17] print out missing file --- cime_config/buildlib | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cime_config/buildlib b/cime_config/buildlib index bf823e9e2e..73db5db3dd 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -91,8 +91,7 @@ def _build_cam(caseroot, libroot, bldroot): # ------------------------------------------------------- if cam_dycore == "fv3": libfms = os.path.join(fmsbuilddir, "libfms.a") - expect(os.path.isfile(libfms), - "err: Missing the FMS library libfms.a - cannot complete CAM build") + expect(os.path.isfile(libfms), "FMS library not found {}".format(libfms)) shutil.copy(libfms, libroot) # ------------------------------------------------------- From 212a84249d07f87231c4b3735bb1764615ab479f Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Wed, 4 Oct 2023 09:49:33 -0600 Subject: [PATCH 17/17] Updated ChangeLog for cam6_3_129 --- doc/ChangeLog | 65 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 82e6cac610..4aa82db7fe 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,9 +2,9 @@ =============================================================== Tag name: cam6_3_129 -Originator(s): cacraig, fischer, hplin, jet -Date: Sept 28, 2023 -One-line Summary: Update externals to match cecm2_3_alpha16d and bring in test_driver which supports derecho +Originator(s): cacraig, fischer, hplin, jet, jedwards +Date: Oct 04, 2023 +One-line Summary: Update externals to match cesm2_3_alpha16d and bring in test_driver which supports derecho Github PR URL: https://github.com/ESCOMP/CAM/pull/888 Purpose of changes (include the issue number and title text for each relevant GitHub issue): @@ -35,14 +35,14 @@ M Externals_CAM.cfg - update HEMCO tag to get fix for line too long M cime_config/buildlib - - Updates for building older FMS library (required with changes in external) + - Updates for building older FMS library (required with changes in external). NOTE - The regression test + which tests FV3 (C96_C96_mg17) is broken. It was verified that the actual test works, but the regression test + no longer compiles properly due to changes in the SHARED_LIB build process. M test/system/test_driver.sh - add derecho functionality (uses cheyenne aux_cam hooks to determine tests to run) - It is important to note that there a number of failures when the tests are run on derecho (see - github issue #XXXXXXXXXXXXXXXXXXXXXXXXXX for details - - + It is important to note that there are a number of failures when the tests are run on derecho (see + github issue https://github.com/ESCOMP/CAM/issues/892 for details) If there were any failures reported from running test_driver.sh on any test platform, and checkin with these failures has been OK'd by the gatekeeper, @@ -50,16 +50,61 @@ then copy the lines from the td.*.status files for the failed tests to the appropriate machine below. All failed tests must be justified. cheyenne/intel/aux_cam: + FAIL ERP_Ln9_Vnuopc.C96_C96_mg17.F2000climo.cheyenne_intel.cam-outfrq9s_mg3 MODEL_BUILD time=2 + - Failure of FMS library compilation when more than one regression test is made due to changes in SHAREDLIB_BUILD + Was approved at AMP SE/scientist meeting to have this test fail until the upcoming FV3 PR is brought in + + FAIL ERP_Ln9_Vnuopc.f09_f09_mg17.FCSD_HCO.cheyenne_intel.cam-outfrq9s COMPARE_base_rest + FAIL SMS_Lh12_Vnuopc.f09_f09_mg17.FCSD_HCO.cheyenne_intel.cam-outfrq3h (Overall: DIFF) details: + - pre-existing failure + + ERP_D_Ln9.ne30pg3_ne30pg3_mg17.FLTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_D_Ln9_Vnuopc.ne30pg3_ne30pg3_mg17.F2000dev.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ld3_Vnuopc.f09_f09_mg17.FWHIST.cheyenne_intel.cam-reduced_hist1d (Overall: DIFF) details: + ERP_Lh12_Vnuopc.f19_f19_mg17.FW4madSD.cheyenne_intel.cam-outfrq3h (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f09_f09_mg17.F1850.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f09_f09_mg17.F2000climo.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f09_f09_mg17.F2000dev.cheyenne_intel.cam-outfrq9s_mg3 (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f09_f09_mg17.F2010climo.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f09_f09_mg17.FHIST_BDRD.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.f19_f19_mg17.FWsc1850.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.ne30_ne30_mg17.FCnudged.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERP_Ln9_Vnuopc.ne30pg3_ne30pg3_mg17.FW2000climo.cheyenne_intel.cam-outfrq9s_wcm_ne30 (Overall: DIFF) details: + ERS_Ld3_Vnuopc.f10_f10_mg37.F1850.cheyenne_intel.cam-outfrq1d_14dec_ghg_cam_dev (Overall: DIFF) details: + ERS_Ln9_P288x1_Vnuopc.mpasa120_mpasa120.F2000climo.cheyenne_intel.cam-outfrq9s_mpasa120 (Overall: DIFF) details: + ERS_Ln9_P36x1_Vnuopc.mpasa480_mpasa480.F2000climo.cheyenne_intel.cam-outfrq9s_mpasa480 (Overall: DIFF) details: + ERS_Ln9_Vnuopc.f09_f09_mg17.FX2000.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERS_Ln9_Vnuopc.f19_f19_mg17.FSPCAMS.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + ERS_Ln9_Vnuopc.f19_f19_mg17.FXSD.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FMTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f09_f09_mg17.FCts2nudged.cheyenne_intel.cam-outfrq9s_leapday (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f09_f09_mg17.FCvbsxHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f09_f09_mg17.FSD.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f19_f19_mg17.FWma2000climo.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f19_f19_mg17.FWma2000climo.cheyenne_intel.cam-outfrq9s_waccm_ma_mam4 (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.f19_f19_mg17.FXHIST.cheyenne_intel.cam-outfrq9s_amie (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.ne16_ne16_mg17.FX2000.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P720x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P720x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc_P720x1.ne30pg3_ne30pg3_mg17.FCLTHIST.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_D_Ln9_Vnuopc.T42_T42.FSCAM.cheyenne_intel.cam-outfrq9s (Overall: DIFF) details: + SMS_Ld1_Vnuopc.f09_f09_mg17.FW2000climo.cheyenne_intel.cam-outfrq1d (Overall: DIFF) details: + SMS_Ld1_Vnuopc.f19_f19.F2000dev.cheyenne_intel.cam-outfrq1d (Overall: DIFF) details: + SMS_Ld1_Vnuopc.ne30pg3_ne30pg3_mg17.FC2010climo.cheyenne_intel.cam-outfrq1d (Overall: DIFF) details: + SMS_Lm13_Vnuopc.f10_f10_mg37.F2000climo.cheyenne_intel.cam-outfrq1m (Overall: DIFF) details: + SMS_Ln9_Vnuopc.f19_f19_mg17.FHIST.cheyenne_intel.cam-outfrq9s_nochem (Overall: DIFF) details: + - answer changes due to updated externals izumi/nag/aux_cam: DAE_Vnuopc.f45_f45_mg37.FHS94.izumi_nag.cam-dae (Overall: FAIL) details: - pre-existing failure izumi/gnu/aux_cam: - SMS_D_Ln9.f10_f10_mg37.2000_CAM%DEV%GHGMAM4_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV_SESP.izumi_gnu.cam-outfrq9s (Overall: DIFF) details: - SMS_P48x1_D_Ln9_Vnuopc.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s (Overall: DIFF) details: + FAIL SMS_D_Ln9.f10_f10_mg37.2000_CAM%DEV%GHGMAM4_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV_SESP.izumi_gnu.cam-outfrq9s BASELINE /fs/cgd/csm/models/atm/cam/pretag_bl/cam6_3_128_gnu: FIELDLIST field lists differ (otherwise bit-for-bit) + FAIL SMS_P48x1_D_Ln9_Vnuopc.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s BASELINE /fs/cgd/csm/models/atm/cam/pretag_bl/cam6_3_128_gnu: DIFF - answer changes due to updated externals +All tests had namelist changes as well =============================================================== ===============================================================