# sinabs.SynOpCounter¶

## SNNSynOpCounter¶

class SNNSynOpCounter(model, dt=1.0)

Counter for the synaptic operations emitted by all SpikingLayers in a spiking model. Note that this is automatically instantiated by from_torch and by Network if they are passed synops=True.

Usage:

counter = SNNSynOpCounter(my_spiking_model)

output = my_spiking_model(input) # forward pass

synops_table = counter.get_synops()

Parameters
• model – Spiking model.

• dt – the number of milliseconds corresponding to a time step in the simulation (default 1.0).

get_synops() → pandas.core.frame.DataFrame

Method to compute a table of synaptic operations for the latest forward pass.

NOTE: this may not be accurate in presence of average pooling.

Returns

A Pandas DataFrame containing layer IDs and respectively, for the latest forward pass performed, their:

number of input spikes, fanout, synaptic operations, number of timesteps, total duration of simulation, number of synaptic operations per second.

Return type

SynOps_dataframe

get_total_power_use(j_per_synop=1e-11)

Method to quickly get the total power use of the network, estimated over the latest forward pass.

Parameters

j_per_synop – Energy use per synaptic operation, in joules. Default 1e-11 J.

Returns: estimated power in mW.

get_total_synops(per_second=False) → float

Faster method for computing total synaptic operations without using Pandas.

NOTE: this may not be accurate in presence of average pooling.

Parameters

per_second (bool, default False) – if True, gives synops per second instead of total synops in the last forward pass.

Returns

the total synops in the network, based on the last forward pass.

Return type

synops

## SynOpCounter¶

class SynOpCounter(modules, sum_activations=True)

Counter for the synaptic operations emitted by all Neuromorphic ReLUs in an analog CNN model.

Usage:

counter = SynOpCounter(MyTorchModel.modules(), sum_activations=True)

output = MyTorchModule(input) # forward pass

synop_count = counter()

Parameters
• modules – list of modules, e.g. MyTorchModel.modules()

• sum_activations – If True (default), returns a single number of synops, otherwise a list of layer synops.