Known issues
In addition to the issues noted below, you can refer to our bug tracker on GitHub.
List of known issues:
Known issues when using multiple run calls
Changing the integration time step of Synapses with delays between run calls
Changing the integration time step of Synapses objects with transmission
delays between successive run calls currently leads to the loss of spikes.
This is the case for spikes that are queued for effect application but haven’t
been applied yet when the first run call terminates. See Brian2CUDA issue
#136 for progress on this issue.
Changing delays between run calls
Changing the delay of Synapses objects between run calls currently
leads to the loss of spikes. This is the case when changing homogenenous delays
or when switching between homogeneous and heterogeneous delays (e.g.
Synapses.delay = 'j*ms' before the first run call and Synapses.delay
= '1*ms' after the first run call). Changing heterogenenous delays
between run calls is not effected from this bug and should work as expected
(e.g. from synapses.delay = 'j*ms' to synapses.delay = '2*j*ms').
See Brian2CUDA issue #302 for progress on this issue.
Using a different integration time for Synapses and its source NeuronGroup
There is currently a bug when using Synapses with homogeneous delays and
choosing a different integration time step (dt) for any of its
SynapticPathway and its associated source NeuronGroup. This bug does
not occur when the delays are heterogenenous or when only the target
NeuronGroup has a different clock. See Brian2CUDA issue #222 for
progress on the issue. Any of the following examples has this bug:
from brian2 import *
group_different_dt = NeuronGroup(1, 'v:1', threshold='True', dt=2*defaultclock.dt)
group_same_dt = NeuronGroup(1, 'v:1', threshold='True', dt=defaultclock.dt)
# Bug: Source of pre->post synaptic pathway uses different dt than synapses
# and synapses have homogeneous delays
synapses = Synapses(
group_different_dt,
group_same_dt,
on_pre='v+=1',
delay=1*ms,
dt=defaultclock.dt
)
# No bug: Synapses have no delays
synapses = Synapses(
group_different_dt,
group_same_dt,
on_pre='v+=1',
dt=defaultclock.dt
)
# No bug: Synapses have heterogeneous delays
synapses = Synapses(
group_different_dt,
group_same_dt,
on_pre='v+=1',
dt=defaultclock.dt
)
synapses.delay = 'j*ms'
# No bug: Source of pre->post synaptic pathway uses the same dt as synapses
synapses = Synapses(
group_same_dt,
group_different_dt,
on_post='v+=1',
delay=1*ms,
dt=defaultclock.dt
)
SpikeMonitor and EventMonitor data is not sorted by indices
In all Brian2 devices, SpikeMonitor and EventMonitor data is first
sorted by time and then by neuron index. In Brian2CUDA, the data is only sorted
by time but not always by index given a fixed time point. See Brian2CUDA issue
#46 for progress on this issue.
Single precision mode fails when using variable names with double digit and dot or scientific notations in name
In single precision mode (set via prefs.core.default_float_dtype),
Brian2CUDA replaces floating point literals like .2, 1. or .4 in generated code with
single precision versions 1.2f, 1.f and .4f. Under some
circumstances, the search/replace algorithm fails and performs a wrong string
replacement. This is the case e.g. for variable name with double digit and a
dot in their name, such as variable12.attribute or when variable names have
a substring that can be interpreted as a scientific number, e.g.
variable28e2, which has 28e2 as substring. If such a wrong replacement
occurs, compilation typically fails due to not declared variables. See
Brian2CUDA issue #254 for progress on the issue.