Skip to content

Steering

Sam Yates edited this page Oct 23, 2018 · 2 revisions

What would constitute a reasonable 'common ground' for the steering of neuron simulators? What operations would Arbor would support? And how would we implement these?

Operations

At minimum:

  • stop simulation.

In increasing order of ambition:

  • change sampling behaviour,
  • rollback to a time point,
  • apply structural or state changes to a subset of the simulated network.

Semantics

Actions and edits will only be able to be applied at certain points in simulation time, as coordination across multiple ranks will require a collective communication. Having an action-exchange communication directly before or after spike exchange might be a good spot.

As these communications will typically be performed asynchronously with respect to cell state integration, their execution will have to be performed for a particular future epoch (that depends, for example, on the spike exchange next to the action exchange). The context in which the action was requested will necessarily precede that epoch; actions will likely need to be associated with a previously evaluated time point (e.g. epoch).

State-changing actions may then require that the simulation be rolled back to this point of context before the delta is applied. This in turn can lead to multiple outputs of the simulation for the same simulation time point, requiring that we add some sort of revision tag to on-line output (sampling, spikes) in order to disambiguate.

Note: maintaining state for rollback purposes requires infrastructure similar to that needed for both simulation snapshotting and relaxation-scheme based integration for gap junctions.

Implementation

Options for entry points:

  • Callback called periodically at spike-exchange time.
  • Thread-safe interface on the simulation object, able to be invoked from other user threads or sampling callbacks.
  • An asynchronous mode for simulation::run() that returns a control object for the purposes of steering control.

Links