diff --git a/cime_config/cesm/machines/config_batch.xml b/cime_config/cesm/machines/config_batch.xml index 12c31b06e3b8..0d2fe946825e 100644 --- a/cime_config/cesm/machines/config_batch.xml +++ b/cime_config/cesm/machines/config_batch.xml @@ -424,7 +424,8 @@ - caldera + hpss + caldera regular capability diff --git a/utils/python/CIME/XML/env_batch.py b/utils/python/CIME/XML/env_batch.py index 846bec7c1ca9..477c1ad35090 100644 --- a/utils/python/CIME/XML/env_batch.py +++ b/utils/python/CIME/XML/env_batch.py @@ -276,7 +276,7 @@ def set_job_defaults(self, bjobs, pesize=None, walltime=None, force_queue=None): else: task_count = int(task_count) - queue = force_queue if force_queue is not None else self.select_best_queue(task_count) + queue = force_queue if force_queue is not None else self.select_best_queue(task_count, job) self.set_value("JOB_QUEUE", queue, subgroup=job) walltime = self.get_max_walltime(queue) if walltime is None else walltime @@ -464,7 +464,7 @@ def get_job_id(self, output): jobid = re.search(jobid_pattern, output).group(1) return jobid - def select_best_queue(self, num_pes): + def select_best_queue(self, num_pes, job=None): # Make sure to check default queue first. all_queues = [] all_queues.append( self.get_default_queue()) @@ -473,9 +473,13 @@ def select_best_queue(self, num_pes): if queue is not None: jobmin = queue.get("jobmin") jobmax = queue.get("jobmax") + jobname = queue.get("jobname") + if jobname is not None: + if job == jobname: + return queue.text # if the fullsum is between the min and max # jobs, then use this queue. - if jobmin is not None and jobmax is not None and num_pes >= int(jobmin) and num_pes <= int(jobmax): - return queue.text + elif jobmin is not None and jobmax is not None and num_pes >= int(jobmin) and num_pes <= int(jobmax): + return queue.text return None def get_max_walltime(self, queue):