tlm_adjoint.checkpoint_schedules.schedule

Module Contents

class tlm_adjoint.checkpoint_schedules.schedule.CheckpointAction(*args)

A checkpointing action.

property args

Action parameters.

class tlm_adjoint.checkpoint_schedules.schedule.Clear(clear_ics, clear_data)

A checkpointing action which clears the intermediate storage.

Parameters:
  • clear_ics – Whether to clear stored forward restart data.

  • clear_data – Whether to clear stored non-linear dependency data.

property clear_ics

Whether to clear stored forward restart data.

property clear_data

Whether to clear stored non-linear dependency data.

class tlm_adjoint.checkpoint_schedules.schedule.Configure(store_ics, store_data)

A checkpointing action which configures the intermediate storage.

Parameters:
  • store_ics – Whether to store forward restart data.

  • store_data – Whether to store non-linear dependency data.

property store_ics

Whether to store forward restart data.

property store_data

Whether to store non-linear dependency data.

class tlm_adjoint.checkpoint_schedules.schedule.Forward(n0, n1)

A checkpointing action which indicates forward advancement.

Parameters:
  • n0 – The forward should advance from the start of this step.

  • n1 – The forward should advance to the start of this step.

property n0

The forward should advance from the start of this step.

property n1

The forward should advance to the start of this step.

class tlm_adjoint.checkpoint_schedules.schedule.Reverse(n1, n0)

A checkpointing action which indicates adjoint advancement.

Parameters:
  • n1 – The adjoint should advance from the start of this step.

  • n0 – The adjoint should advance to the start of this step.

property n0

The adjoint should advance to the start of this step.

property n1

The adjoint should advance from the start of this step.

class tlm_adjoint.checkpoint_schedules.schedule.Read(n, storage, delete)

A checkpointing action which indicates loading of data from a checkpointing unit.

Parameters:
  • n – The step with which the loaded data is associated.

  • storage – The storage from which the data should be loaded. Either ‘RAM’ or ‘disk’.

  • delete – Whether the data should be deleted from the indicated storage after it has been loaded.

property n

The step with which the loaded data is associated.

property storage

The storage from which the data should be loaded. Either ‘RAM’ or ‘disk’.

property delete

Whether the data should be deleted from the indicated storage after it has been loaded.

class tlm_adjoint.checkpoint_schedules.schedule.Write(n, storage)

A checkpointing action which indicates saving of data to a checkpointing unit.

Parameters:
  • n – The step with which the saved data is associated.

  • storage – The storage to which the data should be saved. Either ‘RAM’ or ‘disk’.

property n

The step with which the saved data is associated.

property storage

The storage to which the data should be saved. Either ‘RAM’ or ‘disk’.

class tlm_adjoint.checkpoint_schedules.schedule.EndForward

A checkpointing action which indicates the end of the initial forward calculation.

class tlm_adjoint.checkpoint_schedules.schedule.EndReverse(exhausted)

A checkpointing action which indicates the end of an adjoint calculation.

Parameters:

exhausted – Indicates whether the schedule has concluded. If True then this action should be the last action in the schedule.

property exhausted

Indicates whether the schedule has concluded. If True then this action should be the last action in the schedule.

class tlm_adjoint.checkpoint_schedules.schedule.CheckpointSchedule(max_n=None)

A checkpointing schedule.

Actions in the schedule are accessed by iterating over elements, and actions may be implemented using single-dispatch functions. e.g.

@functools.singledispatch
def action(cp_action):
    raise TypeError(f"Unexpected checkpointing action: {cp_action}")

@action.register(Forward)
def action_forward(cp_action):
    logger.debug(f"forward: forward advance to {cp_action.n1:d}")

# ...

for cp_action in cp_schedule:
    action(cp_action)
    if isinstance(cp_action, EndReverse):
        break

Schedules control an intermediate storage, which buffers forward restart data for forward restart checkpoints, and which stores non-linear dependency data either for storage in checkpointing units or for immediate use by the adjoint. For details see

In ‘offline’ schedules, where the number of steps in the forward calculation is initially known, this should be provided using the max_n argument on instantiation. In ‘online’ schedules, where the number of steps in the forward calculation is initially unknown, the number of forward steps should later be provided using the CheckpointSchedule.finalize() method.

Parameters:

max_n – The number of steps in the initial forward calculation. If not supplied then this should later be provided by calling the CheckpointSchedule.finalize() method.

abstract property is_exhausted

Whether the schedule has concluded. Note that some schedules permit multiple adjoint calculation, and may never conclude.

abstract property uses_disk_storage

Whether the schedule may use disk storage. If False then no disk storage is required.

property n

The forward location. After executing all actions defined so far in the schedule the forward is at the start of this step.

property r

The number of adjoint steps advanced in the current adjoint calculation after executing all actions defined so far in the schedule.

property max_n

The number of forward steps in the initial forward calculation. May return None if this has not yet been provided to the scheduler.

property is_running

Whether the schedule is ‘running’ – i.e. at least one action has been defined so far in the schedule.

abstract iter()

A generator which should be overridden in derived classes in order to define a checkpointing schedule.

finalize(n)

Indicate the number of forward steps in the initial forward calculation.

Parameters:

n – The number of steps in the initial forward calculation.