We were having problems with dummy axons still doing something on the chip, even though they shouldn't. This PR fixes that. I added the test in a separate commit first, so that it's easy to confirm the test fails before the fix and passes after it.
The latter two commits improve support for population axons. The first one allows users to make a connection use pop16 axons instead of the default pop32. This uses fewer axon slots, so that connections can have more axons, but adds some constraints to how these axons are used. (In convolutional networks, this functionally amounts to having to use numbers of filters that are a multiple of 4, with channels_last=True. This allows the axon compartment offset ("base") to be a multiple of 4, which is the requirement for pop16. We could make copies of the weights in the case that we need offsets that are not multiples of 4, such that we have up to 4 copies each for a different modulo of the offset. See #262.)
The last commit allows population axons to be used on input connections when precompute=True (since NxSDK's spike generators now support them).
We were having problems with dummy axons still doing something on the chip, even though they shouldn't. This PR fixes that. I added the test in a separate commit first, so that it's easy to confirm the test fails before the fix and passes after it.
The latter two commits improve support for population axons. The first one allows users to make a connection use pop16 axons instead of the default pop32. This uses fewer axon slots, so that connections can have more axons, but adds some constraints to how these axons are used. (In convolutional networks, this functionally amounts to having to use numbers of filters that are a multiple of 4, with
channels_last=True
. This allows the axon compartment offset ("base") to be a multiple of 4, which is the requirement for pop16. We could make copies of the weights in the case that we need offsets that are not multiples of 4, such that we have up to 4 copies each for a different modulo of the offset. See #262.)The last commit allows population axons to be used on input connections when
precompute=True
(since NxSDK's spike generators now support them).Based on #260.