When a network is run, by default all of its neurons, synapses, and groups are updated. This update has a default mode, but is highly customizable. The network update often happens as part of workspace update but can also occur independently of the workspace (e.g. by making the network run toolbar visible). Note that the network has a time indicator that is separate from the workspace level indicator.
Update Sequence Dialog
Network update can be customized by going to File>Edit Update Sequence.... The general operation of this panel is identical to the workspace updater. Refer to that page for details on how to use it. The basic idea is that on a single iteration the actions in the main list will be fired in the order they are listed. The order can be changed by dragging the actions around or using the arrow buttons. Note:This order is especially important with network update, because subnetworks and neuron groups are updated sequentially in the order they were added to the network, which may not be the preferred order.
By default, all loose neurons and synapses are updated, and then each subnetwork and neuron group is updated. Subnetworks often have their own custom update methods, which is listed in parentheses in the update sequence dialog. These methods are described in the relevant group and subnetwork doc pages. They can be configured within the subnetwork's or group's edit dialog.
There are several choices for updating loose neurons. There is also a parallelized high performance method for updating everything in a network.
As with workspace update, as new components are added to a network, new update actions become available. For neuron groups and subnetworks these are automatically added to the updated sequence. As noted above, this is important to keep track of, since the resulting order may not be what you want.
Here is what the predefined action dialog looks like.
As with workspace update, network update actions can be repeated. So you can add these multiple times to the update sequence.
These are the main update methods available:
Buffered Update of loose neurons: Buffered update is the default update method for loose neurons. When a network is updated the program goes through the list of loose neurons and calls an update function internal to each one, and similarly with the list of synapses. Before these values are actually changed they are stored as a buffer within each network component. In this way, update occurs asynchronously and is predictable. However, there is a visible time lag as activation must first be placed in a buffer and then read from that buffer. So activation can be visibly seen propagating through nodes. There are separate buffered update actions for each neuron group and synapse group in the network.
Priority Update of Loose Neurons: When using priority-based update, neurons are updated sequentially from higher to lower priority neurons (priority is a property of all neurons). These priority values can be viewed using the view menu. Neurons with the same priority are updated in an arbitrary order. For exmaple, given three neurons with priorities 1,2 and 3, the priority-1 neurons will be updated first, the priority-2 neurons, second, etc.
Parallel Buffered Update: Performs the exact same function as Buffered Update, with a few added caveats. First and formost is that parallel buffered update automatically updates all neurons and synapses in the network with no need to specify separate neuron group or synapse group update actions. All afferent synapses are updated when each neuron is updated. Most importantly, the greatest difference is that parallel buffered update is a multi-threaded network update, which utilizes all available processors on the host machine to update the network concurrently. This is the most performance heavy update and is meant for larger networks. It will utilize close to 90% of the host machine's CPU's total processing ability. On a machine with P processors, and the GUI turned off parallel buffered update can offer performance at speeds up to (P - 1)x that of the single-threaded buffered update.
Record Activations: Unlike the other update actions this action does not actually update the neurons it applies to. Rather there is one record action for each neuron group in the network. This action tells the network to write all the activation values of the neuron group tied to this action to a .csv file where each column represents the activation of a neuron over time. This is contingent upon recording being started from the neuron group's edit menu.
Subnetwork-Specific Updates: Subnetworks like Hopfield networks or backprop networks have their own custom update rules, which can sometimes be further configured in the network or group's edit menu. This update method is briefly described in the update sequence menu, in parentheses.
By pressing the custom update button in the Edit update sequence dialog a window appears that allows you to define a custom update action. Custom actions can also be loaded from scripts, and in some of the built in examples are loaded. See the discussion of network scripting docs.