-
Notifications
You must be signed in to change notification settings - Fork 384
Attempt to fix 3489 #3533
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Attempt to fix 3489 #3533
Conversation
…s need revision, see Note.
… for order-independent comparison
…on of SynapseCollection
…on of SynapseCollection
I just pushed another update fixing one corner case and added a regression test. Besides the problem with nrn = nest.Create("parrot_neuron")
nest.Connect(nrn, nrn)
conns = nest.GetConnections()
if conns:
conns.weight = 2.5 Here,
Now, in current master, because A "workaround" is to call Clearly, in this case, where we only need the network size, no MPI communication would be necessary at all, we just induce it because the only way to get data out of the kernel is to call
GetKernelStatus() dance all over again:
|
I manually canceled the Actions workflow because the remaining cases had gotten stuck and our timeout mechanisms don't seem to work for MPI-based tests right now. |
This PR is an (so far not entirely successful) attempt to solve #3489, i.e., to address the problem that spikes are delivered by the event delivery manager after a connection has been removed. See #3489 for a reproducer (not added here as a test yet). I post this here now so further work can build on my attempts.
My attempt to solve this is by running
update_connection_infrastructure()
from the mainupdate_()
loop, after events have been delivered and SP has done its work. In addition, the conn infrastructure must be built once before the first simulation step, so WFR can work already in the first time slice. This is unproblematic, since no spikes can be available for delivery at time 0.Most tests pass, but I needed to adapt some tests because they either worked more by coincidence that robustly, and others so that comparisons of SynapseCollections no longer depend on the order of synapses in the collection; I also ignore
port
in comparisons in almost all cases, because that changes with conn infra updates and is an internal implementation detail. See the changes in testsuite for how I modified tests.I finally ran into trouble that I haven't fully solved yet with
test_spike_transmission_after_simulate()
, which doesThis fails on the
disconnect()
step, claiming that the connection to be deleted does not exist. This is somehow related toConnectionManager::find_connection()
. Introducingnest.Simulate(0.1)
beforeGetConnections()
, and thus forcing the conn infra to be updated, solves the problem and make the test work. Note that this test works in master only if NEST uses compressed spikes, otherwise it fails in the same way as this branch (see #3532).The following tests currently fail, I haven't had time to investigate why: