polaris.ocean.vertical.pstar_init.PStarInitStep

class polaris.ocean.vertical.pstar_init.PStarInitStep(component, name, subdir=None, indir=None, cpus_per_task=1, min_cpus_per_task=1, ntasks=1, min_tasks=1, cores=None, min_cores=None, may_span_nodes=None, openmp_threads=1, memory=None, min_memory=None, cached=False, run_as_subprocess=False, gpus=None, min_gpus=None, gpus_per_task=0, min_gpus_per_task=0)[source]

Base class for initialization steps that use the p-star vertical coordinate.

Subclasses must implement init_tracers(). Subclasses may optionally override _build_pstar_coord_ds() when per-cell coordinate construction is required (e.g. when each cell has a different reference pseudo-depth).

The outer fixed-point iteration is provided by run_pstar_init().

__init__(component, name, subdir=None, indir=None, cpus_per_task=1, min_cpus_per_task=1, ntasks=1, min_tasks=1, cores=None, min_cores=None, may_span_nodes=None, openmp_threads=1, memory=None, min_memory=None, cached=False, run_as_subprocess=False, gpus=None, min_gpus=None, gpus_per_task=0, min_gpus_per_task=0)

Create a new task

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

  • name (str) – the name of the task

  • subdir (str, optional) –

    the subdirectory for the step. If neither this nor indir

    are provided, the directory is the name

  • indir (str, optional) – the directory the step is in, to which name will be appended

  • cpus_per_task (int, optional) – the number of cores per task the step would ideally use. If fewer cores per node are available on the system, the step will run on all available cores as long as this is not below min_cpus_per_task

  • min_cpus_per_task (int, optional) – the number of cores per task the step requires. If the system has fewer than this number of cores per node, the step will fail

  • ntasks (int, optional) – the number of tasks the step would ideally use. If too few cores are available on the system to accommodate the number of tasks and the number of cores per task, the step will run on fewer tasks as long as as this is not below min_tasks

  • min_tasks (int, optional) – the number of tasks the step requires. If the system has too few cores to accommodate the number of tasks and cores per task, the step will fail

  • cores (int, optional) – the number of cores the step needs in total. For a non-MPI step this is the direct way to say it; an MPI step says ntasks and cpus_per_task instead

  • min_cores (int, optional) – the number of cores the step needs in order to run at all

  • may_span_nodes (bool, optional) – whether the step’s cores and GPUs may be drawn from more than one node. Defaults to whether the step has more than one MPI task

  • openmp_threads (int) – the number of OpenMP threads to use

  • memory (int, optional) – the amount of memory in MB the step needs. Declaring one makes it a ceiling on machines that enforce, so declare a peak with margin rather than a typical value

  • min_memory (int, optional) – the amount of memory in MB the step needs in order to run at all

  • gpus (int, optional) – the number of GPUs the step would ideally use, as a total for the step rather than a count per task. A step uses no GPUs unless it says otherwise

  • min_gpus (int, optional) – the number of GPUs the step requires, again as a total

  • gpus_per_task (int, optional) –

    the number of GPUs per task the step would ideally use

    Deprecated since version 1.1.0: Use gpus instead

  • min_gpus_per_task (int, optional) –

    the number of GPUs per task the step requires

    Deprecated since version 1.1.0: Use min_gpus instead

  • cached (bool, optional) – Whether to get all of the outputs for the step from the database of cached outputs for this component

  • run_as_subprocess (bool) – Whether to run this step as a subprocess, rather than just running it directly from the task. It is useful to run a step as a subprocess if there is not a good way to redirect output to a log file (e.g. if the step calls external code that, in turn, calls additional subprocesses).

Methods

__init__(component, name[, subdir, indir, ...])

Create a new task

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_properties()

Check conservation properties of the output files of this step.

constrain_resources(available_resources)

Constrain cpus_per_task and ntasks based on the number of cores available to this step

init_tracers(ds)

Initialize conservative temperature (CT) and absolute salinity (SA) at p-star layer midpoints for the current outer iteration.

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()

Run the step.

run_pstar_init(ds_mesh, geom_z_bot[, ...])

Run the fixed-point iteration that determines BottomPressure (and therefore the p-star coordinate) such that the recovered geometric water-column thickness matches the target within a configurable fractional tolerance.

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()

Set up the task in the work directory, including downloading any dependencies.

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