polaris.e3sm.init.graph_partition.GraphPartitionStep

class polaris.e3sm.init.graph_partition.GraphPartitionStep(component, name, subdir, basename, section, graph_target=None)[source]

A step for partitioning an MPAS graph into the core counts E3SM runs use.

By default the graph is linked in as graph.info and gpmetis is run over it once per core count, several at a time. A subclass that builds its own graphs, as sea ice does for its regions, overrides run() and uses get_core_counts() and cpus_per_task from here.

The core counts depend on the mesh’s cell count, which is not known until the graph exists, so the partition files cannot be declared as outputs at setup. A step that stages them has to find them at run time.

The step reads four options from its config section: max_cells_per_core and min_cells_per_core bound the core counts, and partition_cpus_per_task and partition_min_cpus_per_task set how many partitions are built at once.

Variables:
  • basename (str) – The stem of every partition file: <basename>.part.<ncores>. The default run() also copies the graph to <basename>, so it can be staged beside its partitions under the same name.

  • section (str) – The config section the step’s options are read from.

__init__(component, name, subdir, basename, section, graph_target=None)[source]

Create a new step.

Parameters:
  • component (polaris.Component) – The component the step belongs to.

  • name (str) – The name of the step.

  • subdir (str) – The subdirectory for the step.

  • basename (str) – The stem of every partition file.

  • section (str) – The config section the step’s options are read from.

  • graph_target (str, optional) – The path, relative to the base work directory, of the graph to partition. It is linked in as graph.info. A subclass that builds its own graphs leaves this out.

Methods

__init__(component, name, subdir, basename, ...)

Create a new step.

add_cf_check([filename])

Check an output file for CF compliance after the step runs.

add_dependency(step[, name])

Add step as a dependency of this step (i.e. this step can't run until the dependency has finished).

add_input_file([filename, target, database, ...])

Add an input file to the step (but not necessarily to the MPAS model).

add_output_file(filename[, validate_vars, ...])

Add the output file to the step

add_property_check(filename, check_properties)

Add a single conservation comparison for an output file

check_cf()

Check the files added with add_cf_check() for CF compliance.

check_properties()

Check conservation properties of the output files of this step.

constrain_resources(available_resources)

Take the number of partitions to build at once from the config.

get_core_counts(ncells)

The core counts to partition a mesh into, from the config's bounds.

process_inputs_and_outputs()

Process the inputs to and outputs from a step added with polaris.Step.add_input_file() and polaris.Step.add_output_file().

run()

Partition graph.info into each core count.

runtime_setup()

Update attributes of the step at runtime before calling the run() method.

set_resources([cpus_per_task, ...])

Update the resources for the subtask.

set_shared_config(config[, link])

Replace the step's config parser with the shared config parser

setup()

Take the number of partitions to build at once from the config.

validate_baselines()

Compare variables between output files in this step and in the same step from a baseline run if one was provided.

work_path(*filenames)

Get the absolute path to a file or directory in the step's work directory

Attributes

cores

the number of cores this step needs, in total

gpus

the number of GPUs this step needs, in total

may_span_nodes

whether this step's cores and GPUs may come from several nodes

min_cores

the number of cores this step needs in order to run at all

min_gpus

the number of GPUs this step requires, in total