Open Michaeljurado42 opened 2 years ago
The short answer is that we're not perfect about estimating the number of axons that will be used by NxSDK, so sometimes our verification thinks the network is OK, but then you run into an NxSDK error like you have.
That said, when I've encountered this problem before, it's more often been on connections between chips (since those axons can take an additional axon slot to implement). In your case, it appears to be within the same chip, which in my experience is much less common. It's not clear to me why this happens; if someone figures it out, then we can add it to our code so that we'll more accurately measure numbers of axons both for the utilization summary and our validation.
To debug, I would try to figure out how many axons we think this core should have, and how many NxSDK thinks it has. Then we need to figure out why there's a difference. Definitely something worth looking into, and I'll add it to our backlog. If you or anyone else has a chance to look into it beforehand, let us know what you find.
As a workaround, you can look at the utilization summary and see which blocks are the highest in term of output axons, since it's probably one of those that's the culprit. (You might need to run with target="sim"
or make the nengo_loihi.Simulator
without entering it, i.e. without the with
, to avoid the error.) Then, you can try to massage the block shapes to reduce this.
Even though my snn neural networks work on the simulator and nengo-loihi checks for axon overflow error before uploading the network to loihi, I still occasionally get the following error:
I receive this error for various neural network configurations but I provide a sample below that reproduces this bug: