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.