-
Notifications
You must be signed in to change notification settings - Fork 373
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
Nest running into infinite loop (?) #403
Comments
@Scaatis I can reproduce you infinite loop. One difference I noticed between your two scripts is
vs
The first leads to cm around 10^-3 and to an infinite loop, while the second does not. Multiplying by 1000.0 also in the first scripts makes that script work, too. When configuring the neuron in NEST, PyNN multiplies cm by a factor 1000 internally, so we get in NEST
The default value for
NEST will use I think that this leads to a deadlock in the precise case. One will need to look at the details of |
@Scaatis @heplesser : I can reproduce the error and I am looking at the update function now. Will keep you posted! |
If we were not to take the absolute value here:
the simulation is through in both cases. I haven't systematically tried to understand why though, I will update this thread again. |
@krishnanj Thanks for your detective work! Dropping the absolute value will make the code pass because the while loop will terminate as soon as the left-hand side of the comparison becomes negative. So the I assume that we get stuck in an infinite loop as The question is what to do precisely in this case: Throw an exception or just accept the root found. To decide this, we need to know more about when this problem occurs. Could you analyze this either with a debugger or by adding some output statements to the code? To avoid too much output it would maybe suffice for the start to print values only if |
@heplesser Bisection method takes the voltage value before propagation (which is below threshold) and step Just to be sure, I tried to replicate this in Python:
and it gets stuck since I suppose |
@krishnanj Thanks for the further analysis! I will have a look at it shortly. |
@krishnanj I ran your script with a bit of debugging output and it indeed shows that at some point
The issue then is how to handle cases in which we leave the loop because we have not converged. I suggest to raise an exception:
The other question is why this occurs. If The question now is how the membrane potential could be raised from -90 mV to a superthreshold value (so by about 100 mV) by a single input spike. This seems patently unphysiological. I find the second voltage trace you posted strange: it contains only zeros and occasionally large negative values. Could you explore this a bit more and record the input that goes into the neuron? For this you probably need to use a |
@heplesser Thank you! I will look into this and update this thread again. |
@heplesser may I ask if you can point me to a reference for how to create parrot neurons in PyNN? I couldn't find it in the documentation. |
@krishnanj Unfortunately, I don't know. Could you ask on a PyNN or on the NEST User mailing list? I think it would be best to create a reproducer for this bug using PyNEST, or, even better in SLI, so that we later can integrate it as regression test into our testsuite. |
@heplesser Here is a replica of the same script in PyNEST that generates the same error:
and irrespective of how weights are set it appears that the arrival of first event causes the infinite loop. Initialising seed to some other random value in the program or during run-time only delays this occurrence but seems to hit unnatural voltage values at some point. |
I'm encountering an error when running trying to run my network. Nest runs into an infinite loop, using 100% cpu of one core but making no progress. I'm using PyNN, but debugging showed that the loop occurs in nest. I have encountered this behaviour multiple times, it is difficult to predict and highly dependent on the neuron parameters. In a similar example, the error did not occur immediately, but only 70 out of 100 seconds into the simulation.
I apologise for the large example, it is the smallest example that was able to reliably produce the error. For understanding, I am trying to reproduce behaviour of NEF with Nest.
I am using PyNN 0.8.1 from git and Nest 2.10.0 from the website, though I have also encountered a similar error with PyNN 0.8.0 and Nest 2.8.0 as well as PyNN 0.7.5 and Nest 2.2.2.
What I find particularly confusing is that I have a different script that produces the exact same network, with the same components and same parameters which does not produce the error. I have attached it as well. Invoke it with
python save_ensemble.py <random-seed>
. The seed I used was 11245.Again, I apologise for posting a lot of code, it was really quite tricky to reproduce this error.
The text was updated successfully, but these errors were encountered: