本文整理汇总了Python中CIME.XML.machines.Machines.is_valid_compiler方法的典型用法代码示例。如果您正苦于以下问题:Python Machines.is_valid_compiler方法的具体用法?Python Machines.is_valid_compiler怎么用?Python Machines.is_valid_compiler使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CIME.XML.machines.Machines
的用法示例。
在下文中一共展示了Machines.is_valid_compiler方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_test_suite
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
def get_test_suite(suite, machine=None, compiler=None):
###############################################################################
"""
Return a list of FULL test names for a suite.
"""
expect(suite in _ALL_TESTS, "Unknown test suite: '{}'".format(suite))
machobj = Machines(machine=machine)
machine = machobj.get_machine_name()
if(compiler is None):
compiler = machobj.get_default_compiler()
expect(machobj.is_valid_compiler(compiler),"Compiler {} not valid for machine {}".format(compiler,machine))
inherits_from, _, tests_raw = _ALL_TESTS[suite]
tests = []
for item in tests_raw:
test_mod = None
if (isinstance(item, six.string_types)):
test_name = item
else:
expect(isinstance(item, tuple), "Bad item type for item '{}'".format(str(item)))
expect(len(item) in [2, 3], "Expected two or three items in item '{}'".format(str(item)))
expect(isinstance(item[0], six.string_types), "Expected string in first field of item '{}'".format(str(item)))
expect(isinstance(item[1], six.string_types), "Expected string in second field of item '{}'".format(str(item)))
test_name = item[0]
if (len(item) == 2):
test_mod = item[1]
else:
expect(type(item[2]) in [six.string_types, tuple], "Expected string or tuple for third field of item '{}'".format(str(item)))
test_mod_machines = [item[2]] if isinstance(item[2], six.string_types) else item[2]
if (machine in test_mod_machines):
test_mod = item[1]
tests.append(CIME.utils.get_full_test_name(test_name, machine=machine, compiler=compiler, testmod=test_mod))
if (inherits_from is not None):
inherits_from = [inherits_from] if isinstance(inherits_from, six.string_types) else inherits_from
for inherits in inherits_from:
inherited_tests = get_test_suite(inherits, machine, compiler)
expect(len(set(tests) & set(inherited_tests)) == 0,
"Tests {} defined in multiple suites".format(", ".join(set(tests) & set(inherited_tests))))
tests.extend(inherited_tests)
return tests
示例2: get_test_suite
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
def get_test_suite(suite, machine=None, compiler=None, skip_inherit=False):
###############################################################################
"""
Return a list of FULL test names for a suite.
"""
expect(suite in get_test_suites(), "Unknown test suite: '{}'".format(suite))
machobj = Machines(machine=machine)
machine = machobj.get_machine_name()
if(compiler is None):
compiler = machobj.get_default_compiler()
expect(machobj.is_valid_compiler(compiler),"Compiler {} not valid for machine {}".format(compiler,machine))
inherits_from, _, _, tests_raw = get_test_data(suite)
tests = []
for item in tests_raw:
expect(isinstance(item, six.string_types), "Bad type of test {}, expected string".format(item))
test_mod = None
test_components = item.split(".")
expect(len(test_components) in [3, 4], "Bad test name {}".format(item))
if (len(test_components) == 4):
test_name = ".".join(test_components[:-1])
test_mod = test_components[-1]
else:
test_name = item
tests.append(CIME.utils.get_full_test_name(test_name, machine=machine, compiler=compiler, testmod=test_mod))
if not skip_inherit:
for inherits in inherits_from:
inherited_tests = get_test_suite(inherits, machine, compiler)
for inherited_test in inherited_tests:
if inherited_test not in tests:
tests.append(inherited_test)
return tests
示例3: configure
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
def configure(self, compset_name, grid_name, machine_name=None,
project=None, pecount=None, compiler=None, mpilib=None,
user_compset=False, pesfile=None,
user_grid=False, gridfile=None, ninst=1, test=False,
walltime=None, queue=None):
#--------------------------------------------
# compset, pesfile, and compset components
#--------------------------------------------
self._set_compset_and_pesfile(compset_name, user_compset=user_compset, pesfile=pesfile)
self._components = self.get_compset_components()
#FIXME - if --user-compset is True then need to determine that
#all of the compset settings are valid
#--------------------------------------------
# grid
#--------------------------------------------
if user_grid is True and gridfile is not None:
self.set_value("GRIDS_SPEC_FILE", gridfile)
grids = Grids(gridfile)
gridinfo = grids.get_grid_info(name=grid_name, compset=self._compsetname)
self._gridname = gridinfo["GRID"]
for key,value in gridinfo.items():
logger.debug("Set grid %s %s"%(key,value))
self.set_lookup_value(key,value)
#--------------------------------------------
# component config data
#--------------------------------------------
self._get_component_config_data()
self.get_compset_var_settings()
#--------------------------------------------
# machine
#--------------------------------------------
# set machine values in env_xxx files
machobj = Machines(machine=machine_name)
machine_name = machobj.get_machine_name()
self.set_value("MACH",machine_name)
nodenames = machobj.get_node_names()
nodenames = [x for x in nodenames if
'_system' not in x and '_variables' not in x and 'mpirun' not in x and\
'COMPILER' not in x and 'MPILIB' not in x]
for nodename in nodenames:
value = machobj.get_value(nodename, resolved=False)
type_str = self.get_type_info(nodename)
if type_str is not None:
logger.debug("machine nodname %s value %s"%(nodename, value))
self.set_value(nodename, convert_to_type(value, type_str, nodename))
if compiler is None:
compiler = machobj.get_default_compiler()
else:
expect(machobj.is_valid_compiler(compiler),
"compiler %s is not supported on machine %s" %(compiler, machine_name))
self.set_value("COMPILER",compiler)
if mpilib is None:
mpilib = machobj.get_default_MPIlib({"compiler":compiler})
else:
expect(machobj.is_valid_MPIlib(mpilib, {"compiler":compiler}),
"MPIlib %s is not supported on machine %s" %(mpilib, machine_name))
self.set_value("MPILIB",mpilib)
machdir = machobj.get_machines_dir()
self.set_value("MACHDIR", machdir)
# Create env_mach_specific settings from machine info.
env_mach_specific_obj = self.get_env("mach_specific")
env_mach_specific_obj.populate(machobj)
self.schedule_rewrite(env_mach_specific_obj)
#--------------------------------------------
# pe payout
#--------------------------------------------
match1 = re.match('([0-9]+)x([0-9]+)', "" if pecount is None else pecount)
match2 = re.match('([0-9]+)', "" if pecount is None else pecount)
pes_ntasks = {}
pes_nthrds = {}
pes_rootpe = {}
if match1:
opti_tasks = match1.group(1)
opti_thrds = match1.group(2)
elif match2:
opti_tasks = match2.group(1)
opti_thrds = 1
other = {}
if match1 or match2:
for component_class in self._component_classes:
if component_class == "DRV":
component_class = "CPL"
string = "NTASKS_" + component_class
pes_ntasks[string] = opti_tasks
#.........这里部分代码省略.........
示例4: SystemTest
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
class SystemTest(object):
###############################################################################
###########################################################################
def __init__(self, test_names,
no_run=False, no_build=False, no_batch=None,
test_root=None, test_id=None,
machine_name=None,compiler=None,
baseline_root=None, baseline_name=None,
clean=False,compare=False, generate=False, namelists_only=False,
project=None, parallel_jobs=None,
xml_machine=None, xml_compiler=None, xml_category=None,xml_testlist=None):
###########################################################################
self._cime_root = CIME.utils.get_cime_root()
self._cime_model = CIME.utils.get_model()
# needed for perl interface
os.environ["CIMEROOT"] = self._cime_root
self._machobj = Machines(machine=machine_name)
machine_name = self._machobj.get_machine_name()
self._no_build = no_build if not namelists_only else True
self._no_run = no_run if not self._no_build else True
# Figure out what project to use
if (project is None):
self._project = CIME.utils.get_project()
if (self._project is None):
self._project = self._machobj.get_value("PROJECT")
else:
self._project = project
# We will not use batch system if user asked for no_batch or if current
# machine is not a batch machine
self._no_batch = no_batch or not self._machobj.has_batch_system()
self._test_root = test_root if test_root is not None else self._machobj.get_value("CESMSCRATCHROOT")
if (self._project is not None):
self._test_root = self._test_root.replace("$PROJECT", self._project)
self._test_root = os.path.abspath(self._test_root)
self._test_id = test_id if test_id is not None else CIME.utils.get_utc_timestamp()
self._compiler = compiler if compiler is not None else self._machobj.get_default_compiler()
expect(self._machobj.is_valid_compiler(self._compiler),
"Compiler %s not valid for machine %s" % (self._compiler,machine_name))
self._clean = clean
self._namelists_only = namelists_only
# Extra data associated with tests, do not modify after construction
# test_name -> test_data
# test_data: name -> value
self._test_data = {}
# If xml options are provided get tests from xml file, otherwise use acme dictionary
if(not test_names and (xml_machine is not None or xml_category is not None or xml_compiler is not None or xml_testlist is not None)):
test_data = CIME.test_utils.get_tests_from_xml(xml_machine, xml_category, xml_compiler, xml_testlist, machine_name, compiler)
test_names = [item["name"] for item in test_data]
for test_datum in test_data:
self._test_data[test_datum["name"]] = test_datum
else:
expect(len(test_names) > 0, "No tests to run")
test_names = update_acme_tests.get_full_test_names(test_names, machine_name, self._compiler)
if (parallel_jobs is None):
self._parallel_jobs = min(len(test_names), int(self._machobj.get_value("MAX_TASKS_PER_NODE")))
else:
self._parallel_jobs = parallel_jobs
self._baseline_cmp_name = None
self._baseline_gen_name = None
self._compare = False
self._generate = False
if (compare or generate):
# Figure out what baseline name to use
if (baseline_name is None):
if(compare is not None and isinstance(compare,str)):
self._baseline_cmp_name = compare
self._compare = True
if(generate is not None and isinstance(generate,str)):
self._baseline_gen_name = generate
self._generate = True
branch_name = CIME.utils.get_current_branch(repo=self._cime_root)
expect(branch_name is not None, "Could not determine baseline name from branch, please use -b option")
if(self._compare and self._baseline_cmp_name is None):
self._baseline_cmp_name = os.path.join(self._compiler, branch_name)
if(self._generate and self._baseline_gen_name is None):
self._baseline_gen_name = os.path.join(self._compiler, branch_name)
else:
if(compare):
self._compare = True
self._baseline_cmp_name = baseline_name
if (not self._baseline_cmp_name.startswith("%s/" % self._compiler)):
self._baseline_cmp_name = os.path.join(self._compiler, self._baseline_cmp_name)
if(generate):
self._generate = True
self._baseline_gen_name = baseline_name
if (not self._baseline_gen_name.startswith("%s/" % self._compiler)):
self._baseline_gen_name = os.path.join(self._compiler, self._baseline_gen_name)
#.........这里部分代码省略.........
示例5: configure
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
def configure(self, compset_name, grid_name, machine_name=None,
project=None, pecount=None, compiler=None, mpilib=None,
user_compset=False, pesfile=None,
user_grid=False, gridfile=None, ninst=1, test=False):
#--------------------------------------------
# compset, pesfile, and compset components
#--------------------------------------------
self._set_compset_and_pesfile(compset_name, user_compset=user_compset, pesfile=pesfile)
self._components = self.get_compset_components()
#FIXME - if --user-compset is True then need to determine that
#all of the compset settings are valid
#--------------------------------------------
# grid
#--------------------------------------------
if user_grid is True and gridfile is not None:
self.set_value("GRIDS_SPEC_FILE", gridfile);
grids = Grids(gridfile)
gridinfo = grids.get_grid_info(name=grid_name, compset=self._compsetname)
self._gridname = gridinfo["GRID"]
for key,value in gridinfo.items():
logger.debug("Set grid %s %s"%(key,value))
self.set_value(key,value)
#--------------------------------------------
# component config data
#--------------------------------------------
self._get_component_config_data()
self.get_compset_var_settings()
# Add the group and elements for the config_files.xml
for idx, config_file in enumerate(self._component_config_files):
self.set_value(config_file[0],config_file[1])
#--------------------------------------------
# machine
#--------------------------------------------
# set machine values in env_xxx files
machobj = Machines(machine=machine_name)
machine_name = machobj.get_machine_name()
self.set_value("MACH",machine_name)
nodenames = machobj.get_node_names()
nodenames = [x for x in nodenames if
'_system' not in x and '_variables' not in x and 'mpirun' not in x and\
'COMPILER' not in x and 'MPILIB' not in x]
for nodename in nodenames:
value = machobj.get_value(nodename)
type_str = self.get_type_info(nodename)
if type_str is not None:
self.set_value(nodename, convert_to_type(value, type_str, nodename))
if compiler is None:
compiler = machobj.get_default_compiler()
else:
expect(machobj.is_valid_compiler(compiler),
"compiler %s is not supported on machine %s" %(compiler, machine_name))
self.set_value("COMPILER",compiler)
if mpilib is None:
mpilib = machobj.get_default_MPIlib({"compiler":compiler})
else:
expect(machobj.is_valid_MPIlib(mpilib, {"compiler":compiler}),
"MPIlib %s is not supported on machine %s" %(mpilib, machine_name))
self.set_value("MPILIB",mpilib)
machdir = machobj.get_machines_dir()
self.set_value("MACHDIR", machdir)
# Overwriting an existing exeroot or rundir can cause problems
exeroot = self.get_value("EXEROOT")
rundir = self.get_value("RUNDIR")
for wdir in (exeroot, rundir):
if os.path.exists(wdir):
expect(not test, "Directory %s already exists, aborting test"% wdir)
response = raw_input("\nDirectory %s already exists, (r)eplace, (a)bort, or (u)se existing?"% wdir)
if response.startswith("r"):
shutil.rmtree(wdir)
else:
expect(response.startswith("u"), "Aborting by user request")
# the following go into the env_mach_specific file
vars = ("module_system", "environment_variables", "mpirun")
env_mach_specific_obj = self._get_env("mach_specific")
for var in vars:
nodes = machobj.get_first_child_nodes(var)
for node in nodes:
env_mach_specific_obj.add_child(node)
#--------------------------------------------
# pe payout
#--------------------------------------------
pesobj = Pes(self._pesfile)
#FIXME - add pesize_opts as optional argument below
#.........这里部分代码省略.........
示例6: SystemTest
# 需要导入模块: from CIME.XML.machines import Machines [as 别名]
# 或者: from CIME.XML.machines.Machines import is_valid_compiler [as 别名]
class SystemTest(object):
###############################################################################
###########################################################################
def __init__(self, test_names,
no_run=False, no_build=False, no_batch=None,
test_root=None, test_id=None,
machine_name=None, compiler=None,
baseline_root=None, baseline_name=None,
clean=False, compare=False, generate=False, namelists_only=False,
project=None, parallel_jobs=None,
xml_machine=None, xml_compiler=None, xml_category=None,
xml_testlist=None, walltime=None, proc_pool=None,
use_existing=False):
###########################################################################
self._cime_root = CIME.utils.get_cime_root()
self._cime_model = CIME.utils.get_model()
# needed for perl interface
os.environ["CIMEROOT"] = self._cime_root
# if machine_name is set use it, otherwise if xml_machine is set use it,
# otherwise probe for machine_name
if machine_name is None:
machine_name = xml_machine
self._machobj = Machines(machine=machine_name)
machine_name = self._machobj.get_machine_name()
self._no_build = no_build if not namelists_only else True
self._no_run = no_run if not self._no_build else True
# Figure out what project to use
if project is None:
self._project = CIME.utils.get_project()
if self._project is None:
self._project = self._machobj.get_value("PROJECT")
else:
self._project = project
# We will not use batch system if user asked for no_batch or if current
# machine is not a batch machine
self._no_batch = no_batch or not self._machobj.has_batch_system()
self._test_root = test_root if test_root is not None \
else self._machobj.get_value("CESMSCRATCHROOT")
if self._project is not None:
self._test_root = self._test_root.replace("$PROJECT", self._project)
self._test_root = os.path.abspath(self._test_root)
self._test_id = test_id if test_id is not None else CIME.utils.get_utc_timestamp()
# if compiler is set use it, otherwise if xml_compiler is set use it,
# otherwise use the default compiler for the machine
if compiler is not None:
self._compiler = compiler
elif xml_compiler is not None:
self._compiler = xml_compiler
else:
self._compiler = self._machobj.get_default_compiler()
expect(self._machobj.is_valid_compiler(self._compiler),
"Compiler %s not valid for machine %s" % (self._compiler, machine_name))
self._clean = clean
self._namelists_only = namelists_only
# Extra data associated with tests, do not modify after construction
# test_name -> test_data
# test_data: name -> value
self._test_xml = {}
# If xml options are provided get tests from xml file, otherwise use acme dictionary
if not test_names and (xml_machine is not None or xml_category is not None or
xml_compiler is not None or xml_testlist is not None):
test_data = CIME.test_utils.get_tests_from_xml(xml_machine, xml_category,
xml_compiler, xml_testlist,
machine_name, compiler)
test_names = [item["name"] for item in test_data]
for test_datum in test_data:
self._test_xml[test_datum["name"]] = test_datum
else:
expect(len(test_names) > 0, "No tests to run")
test_names = update_acme_tests.get_full_test_names(test_names,
machine_name, self._compiler)
if walltime is not None:
for test in test_names:
if test in self._test_xml:
test_datum = self._test_xml[test]
else:
test_datum = {}
self._test_xml[test] = test_datum
test_datum["wallclock"] = walltime
if parallel_jobs is None:
self._parallel_jobs = min(len(test_names),
int(self._machobj.get_value("MAX_TASKS_PER_NODE")))
else:
#.........这里部分代码省略.........