Skip to content

Commit f9a6270

Browse files
committed
Merge branch 'master' into doc_update
2 parents 01631f4 + c63fd0b commit f9a6270

File tree

11 files changed

+87
-66
lines changed

11 files changed

+87
-66
lines changed

CIME/SystemTests/system_tests_common.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,10 @@ def _set_restart_interval(
211211
smon = int(smon)
212212
sday = int(sday)
213213
else:
214-
syr = int(startdate) / 10000
215-
smon = int(startdate) - syr * 10000 / 100
216-
sday = int(startdate) - syr * 10000 - smon * 100
214+
startdate = int(startdate)
215+
syr = int(startdate / 10000)
216+
smon = int((startdate - syr * 10000) / 100)
217+
sday = startdate - syr * 10000 - smon * 100
217218

218219
addyr = syr // 10000
219220
syr = syr % 10000

CIME/Tools/Makefile

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -655,14 +655,6 @@ ULIBS += -L$(INSTALL_SHAREDPATH)/lib
655655

656656
ULIBS += -lcsm_share -L$(INSTALL_SHAREDPATH)/lib $(PIOLIBNAME) -lgptl
657657

658-
# Add Kokkos header files and libraries for SE-NH dycore
659-
ifdef USE_KOKKOS
660-
CAM_TARGET ?= $(shell $(CASEROOT)/xmlquery --caseroot $(CASEROOT) CAM_TARGET --value)
661-
ifeq ($(filter $(CAM_TARGET),theta-l theta-l_kokkos),$(CAM_TARGET))
662-
ULIBS += -L$(INSTALL_SHAREDPATH)/lib64 -lkokkoscontainers -lkokkoscore -lkokkossimd
663-
endif
664-
endif
665-
666658
#------------------------------------------------------------------------------
667659
# Drive cmake script for cism and pio
668660
#------------------------------------------------------------------------------
@@ -738,6 +730,7 @@ CMAKE_ENV_VARS += CC=$(CC) \
738730
FC=$(FC) \
739731
LDFLAGS="$(LDFLAGS)"
740732

733+
F90_LDFLAGS += $(FFLAGS)
741734

742735
# We declare GLCMakefile to be a phony target so that cmake is
743736
# always rerun whenever invoking 'make GLCMakefile'; this is

CIME/XML/env_batch.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -237,21 +237,19 @@ def get_job_overrides(self, job, case):
237237
# when developed this variable was only needed on derecho, but I have tried to
238238
# make it general enough that it can be used on other systems by defining MEM_PER_TASK and MAX_MEM_PER_NODE in config_machines.xml
239239
# and adding {{ mem_per_node }} in config_batch.xml
240-
try:
241-
mem_per_task = case.get_value("MEM_PER_TASK")
242-
max_mem_per_node = case.get_value("MAX_MEM_PER_NODE")
243-
mem_per_node = total_tasks
244-
245-
if mem_per_node < mem_per_task:
246-
mem_per_node = mem_per_task
247-
elif mem_per_node > max_mem_per_node:
248-
mem_per_node = max_mem_per_node
249-
overrides["mem_per_node"] = mem_per_node
250-
except TypeError:
251-
# ignore this, the variables are not defined for this machine
252-
pass
253-
except Exception as error:
254-
print("An exception occured:", error)
240+
mem_per_task = case.get_value("MEM_PER_TASK")
241+
max_tasks_per_node = case.get_value("MAX_TASKS_PER_NODE")
242+
expect(
243+
max_tasks_per_node > 0,
244+
"Error MAX_TASKS_PER_NODE not set or set incorrectly",
245+
)
246+
max_mem_per_node = case.get_value("MAX_MEM_PER_NODE")
247+
if mem_per_task and total_tasks <= max_tasks_per_node:
248+
overrides["mem_per_node"] = int(
249+
float(total_tasks) / float(max_tasks_per_node) * max_mem_per_node
250+
)
251+
elif max_mem_per_node:
252+
overrides["mem_per_node"] = max_mem_per_node
255253

256254
overrides["ngpus_per_node"] = ngpus_per_node
257255
overrides["mpirun"] = case.get_mpirun_cmd(job=job, overrides=overrides)

CIME/bless_test_results.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
)
1010
from CIME.config import Config
1111
from CIME.test_status import *
12-
from CIME.hist_utils import generate_baseline, compare_baseline
12+
from CIME.hist_utils import generate_baseline, compare_baseline, NO_ORIGINAL
1313
from CIME.case import Case
1414
from CIME.test_utils import get_test_status_files
1515
from CIME.baselines.performance import (
@@ -180,6 +180,18 @@ def bless_history(test_name, case, baseline_name, baseline_root, report_only, fo
180180
if not report_only and (
181181
force or input("Update this diff (y/n)? ").upper() in ["Y", "YES"]
182182
):
183+
# Sometimes, in order to get things passing, files have to be removed
184+
# from the baseline area.
185+
for line in cmp_comments.splitlines():
186+
if NO_ORIGINAL in line:
187+
file_to_remove = (
188+
line.split(NO_ORIGINAL)[0].split()[-1].strip("'")
189+
)
190+
logger.info(
191+
"Removing stale baseline file {}".format(file_to_remove)
192+
)
193+
os.remove(os.path.join(baseline_full_dir, file_to_remove))
194+
183195
gen_result, gen_comments = generate_baseline(
184196
case, baseline_dir=baseline_full_dir
185197
)

CIME/build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ def _build_libraries(
755755
if mpilib == "mpi-serial":
756756
libs.insert(0, mpilib)
757757

758-
if uses_kokkos(case):
758+
if uses_kokkos(case) and comp_interface != "nuopc":
759759
libs.append("kokkos")
760760

761761
# Build shared code of CDEPS nuopc data models

CIME/build_scripts/buildlib.mpi-serial

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,11 @@ def buildlib(bldroot, installpath, case):
8080
run_bld_cmd_ensure_logging(cmd, logger)
8181

8282
# Now we run the mpi-serial make command
83-
gmake_opts = "-f {} ".format(os.path.join(bldroot, "Makefile"))
83+
gmake_opts = "-f {} ".format(os.path.join(mpi_serial_path, "Makefile"))
8484
gmake_opts += " -C {} ".format(bldroot)
8585
gmake_opts += " -j {} ".format(case.get_value("GMAKE_J"))
86-
gmake_opts += " SRCDIR={} ".format(os.path.join(mpi_serial_path))
86+
gmake_opts += " SRCDIR={} ".format(mpi_serial_path)
87+
gmake_opts += " VPATH={}".format(mpi_serial_path)
8788

8889
cmd = "{} {}".format(gmake_cmd, gmake_opts)
8990
run_bld_cmd_ensure_logging(cmd, logger)

CIME/case/case_st_archive.py

Lines changed: 49 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -168,42 +168,59 @@ def _archive_rpointer_files(
168168
datename_is_last,
169169
):
170170
###############################################################################
171-
if datename_is_last:
172-
rpointers = glob.glob(
173-
os.path.join(rundir, "rpointer.*" + _datetime_str(datename))
174-
)
175-
# Copy of all rpointer files for latest restart date
176-
rpointers = glob.glob(os.path.join(rundir, "rpointer.*"))
177-
for rpointer in rpointers:
178-
safe_copy(
179-
rpointer, os.path.join(archive_restdir, os.path.basename(rpointer))
180-
)
181-
else:
182-
# Generate rpointer file(s) for interim restarts for the one datename and each
183-
# possible value of ninst_strings
184-
if save_interim_restart_files:
185-
rpointers = glob.glob(
186-
os.path.join(rundir, "rpointer.*" + _datetime_str(datename))
187-
)
188-
# If timestamped rpointers exist use them
189-
if rpointers:
190-
for rpointer in rpointers:
191-
safe_copy(
192-
rpointer,
193-
os.path.join(archive_restdir, os.path.basename(rpointer)),
194-
)
195-
else:
196-
# parse env_archive.xml to determine the rpointer files
197-
# and contents for the given archive_entry tag
198-
rpointer_items = archive.get_rpointer_contents(archive_entry)
199171

200-
# loop through the possible rpointer files and contents
201-
for rpointer_file, rpointer_content in rpointer_items:
202-
temp_rpointer_file = rpointer_file
203-
temp_rpointer_content = rpointer_content
172+
# parse env_archive.xml to determine the rpointer files
173+
# and contents for the given archive_entry tag
174+
# loop through the possible rpointer files and contents
175+
rpointer_nodes = archive.get_children("rpointer", root=archive_entry)
176+
for rpointer in rpointer_nodes:
177+
file_node = archive.get_child("rpointer_file", root=rpointer)
178+
temp_rpointer_file = archive.text(file_node)
179+
content_node = archive.get_child("rpointer_content", root=rpointer)
180+
temp_rpointer_content = archive.text(content_node)
181+
rpointer_file = temp_rpointer_file.replace("$NINST_STRING", "*")
182+
if rpointer_file == "unset":
183+
continue
184+
if "$DATENAME" in rpointer_file:
185+
rpointer_file = rpointer_file.replace("$DATENAME", _datetime_str(datename))
186+
187+
expect(
188+
not "$" in rpointer_file,
189+
"Unrecognized expression in name {}".format(rpointer_file),
190+
)
191+
rpointers = glob.glob(rundir + "/" + rpointer_file)
192+
if datename_is_last:
193+
for rpfile in rpointers:
194+
safe_copy(
195+
rpfile, os.path.join(archive_restdir, os.path.basename(rpfile))
196+
)
197+
else:
198+
# Generate rpointer file(s) for interim restarts for the one datename and each
199+
# possible value of ninst_strings
200+
if save_interim_restart_files:
201+
# If timestamped rpointers exist use them
202+
if rpointers:
203+
for rpfile in rpointers:
204+
logger.info("moving interim rpointer_file {}".format(rpfile))
205+
shutil.move(
206+
rpfile,
207+
os.path.join(archive_restdir, os.path.basename(rpfile)),
208+
)
209+
else:
204210

205211
# put in a temporary setting for ninst_strings if they are empty
206212
# in order to have just one loop over ninst_strings below
213+
if ninst_strings:
214+
rpointer_content = temp_rpointer_content.replace(
215+
"$NINST_STRING", ninst_strings[0]
216+
)
217+
else:
218+
rpointer_content = temp_rpointer_content.replace(
219+
"$NINST_STRING", ""
220+
)
221+
rpointer_content = rpointer_content.replace(
222+
"$DATENAME", _datetime_str(datename)
223+
)
207224
if rpointer_content != "unset":
208225
if not ninst_strings:
209226
ninst_strings = ["empty"]

CIME/case/case_submit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ def submit(
287287
functor,
288288
"case.submit",
289289
caseroot=caseroot,
290-
custom_success_msg_functor=lambda x: x.split(":")[-1],
290+
custom_success_msg_functor=lambda x: x,
291291
is_batch=is_batch,
292292
gitinterface=self._gitinterface,
293293
)

CIME/data/config/cesm/config_files.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,6 @@
647647
<entry id="BUILD_LIB_FILE">
648648
<type>char</type>
649649
<values>
650-
<value lib="kokkos">$SRCROOT/libraries/build_scripts/buildlib.kokkos</value>
651650
<value lib="FMS">$SRCROOT/libraries/FMS/buildlib</value>
652651
<value lib="CDEPS">$SRCROOT/components/cdeps/cime_config/buildlib</value>
653652
<value lib="CMEPS">$SRCROOT/components/cmeps/cime_config/buildlib</value>

CIME/non_py/src/timing/perf_mod.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ subroutine t_prf(filename, mpicom, num_outpe, stride_outpe, &
11621162
!-----------------------------------------------------------------------
11631163
!
11641164
if (.not. timing_initialized) return
1165-
#ifdef NUOPC_INTERFACE
1165+
#if defined NUOPC_INTERFACE && ! (defined MODEL_THETA_L && defined HOMME_ENABLE_COMPOSE)
11661166
return
11671167
#endif
11681168

0 commit comments

Comments
 (0)