Unsupported features in Brian2GeNN¶
Restrictions on summed variables¶
Summed variables are supported starting with version 1.4. There are a number of restrictions, however. Most importantly:
- the equations of a
Synapsesobject can only use a single summed variable
- a summed variable cannot be combined with another action on a post-synaptic variable
g_exc_post += w_exc).
GeNN does not support custom event types in addition to the standard threshold and reset, they can therefore not be used with the Brian2GeNN backend.
At the moment, GeNN only has support for a single homogeneous delay for each
synaptic population. Brian simulations that use heterogeneous delays can
therefore not use the Brian2GeNN backend. In simple cases with just a few
different delay values (e.g. one set of connections with a short and another
set of connections with a long delay), this limitation can be worked around by
Synapses objects with each using a homogeneous delay.
Multiple synaptic pathways¶
GeNN does not have support for multiple synaptic pathways as Brian 2 does, you
can therefore only use a single
post pathway with Brian2GeNN.
Timed arrays post a problem in the Brian2GeNN interface because they
necessitate communication from the timed array to the target group at
runtime that would result in host to GPU copies in the final CUDA/C++
code. This could lead to large inefficiences, the use of
TimedArray is therefore
currently restricted to code in
run_regularly operations that will be executed on
GeNN is by design operated with a single clock with a fixed time step across the entire simulation. If you are using multiple clocks and they are commensurate, please reformulate your script using just the fastest clock as the standard clock. If your clocks are not commensurate, and this is essential for your simulation, Brian2GeNN can unfortunately not be used.
GeNN is designed for single runs and cannot be used for the Brian style
multiple runs. However, if this is of use, code can be run repeatedly
“in multiple runs” that are completely independent. This just needs
device.activate() issued after the
Note, however, that these multiple runs are completely independent, i.e. for the second run the code generation pipeline for Brian2GeNN is repeated in its entirety which may incur a measurable delay.
Multiple networks cannot be supported in the Brian2GeNN
interface. Please use only a single network, either by creating it explicitly
Network object or by not creating any (i.e. using Brian’s “magic”
GeNN has a fixed order of operations during a time step, Brian’s more flexible
scheduling model (e.g. changing a network’s schedule or individual objects’
when attribute) can therefore not be used.