Package: nengo-loihi
NengoLoihiA backend for running Nengo models on Intel’s Loihi architecture.To use the backend, simply replace:nengo.Simulator(model)with:nengo_loihi.Simulator(model)For more details and installation instructions,
pleasesee the documentation.Release history1.1.0 (January 25, 2022)Compatible with Nengo 3.1.0 - 3.2.0Compatible with NxSDK 0.9.0 - 1.0.0AddedAdded support for NxSDK 1.0.0. (#317)AddedSimulator.clear_probesto clear probe histories. This can help reduce memory
usage during long runs, by running for a segment of the full run time, recording the
relevant outputs, callingclear_probes, and resuming the run. (#303)Added support forpadding='same'onnengo.Convolutiontransforms. (#297)Added support fornengo.transforms.ConvolutionTranspose. (#300)BlockandCompartmentnow have.discretize_infoattributes that store
parameters used for discretizing that block and compartment. (#309)Modelnow has aconnection_decode_neuronsattribute that mapsConnectionobjects that require decode neurons to the correspondingEnsembleobjects
implementing them. (#309)Added theGreedyInterchipallocator, which reduces inter-chip communication,
speeding up networks with high traffic between chips. (#309)Added thePartitionInterchipallocator, which reduces inter-chip communication
with better partitioning thanGreedyInterchip. Requires thenxmetispackage. (#309)ChangedBuild errors specify the associated objects, making them easier to debug. (#289)Deobfuscated NxSDK API calls. (#320)The builder now respects theprecision.bitsattribute innengorcfiles,
allowing for reduced-precision builds to save memory. (#309)The newGreedyInterchipallocator is now the default allocator. (#309)NeuronOutputNoiseclasses and NengoDL builders forLoihiLIFandLoihiSpikingRectifiedLinearhave been moved to NengoExtras. (#325)Examples have been moved toNengoExamples. (#325)FixedFixed several issues to ensure that memory is freed when aSimulatoris deleted. (#312)Fixed probe filters such that multipleSimulator.runcalls now results in
the same probe data as a single call of equivalent length. (#271,#303)Convolution with 1 x 1 kernels now works as expected. (#297)Fixed a bug preventing targeting Loihi even if NxSDK is installed. (#300)Fixed howDecodeNeuronshandlesdt != 0.001. (#309)1.0.0 (January 20, 2021)Compatible with Nengo 3.1.0Compatible with NxSDK 0.9.0 - 0.9.9AddedAdded Legendre Memory Unit example.
(#267)Added atimersattribute toSimulatorthat tracks the wall time
taken by various parts of the model, including build time and run time.
(#260)Added thepop_typeconfiguration option to theConnectionconfig.
Seenengo_loihi.add_paramsfor details. (#261)Added theblock_shapeconfiguration option to theEnsembleconfig,
and added thenengo_loihi.BlockShapeclass to set that option.
Seenengo_loihi.add_paramsfor details. (#264)Added theGreedyallocator, which uses all cores on one chip before
proceeding to the next chip.Greedyis now the default allocator.
(#266)Added then_chipsparameter toHardwareInterfacefor specifying
the number of chips on the board.
(#266)AddedModel.utilization_summaryto provide a summary of how much of
the various resources of each block are utilized.
(#279)Added somenew documentationfocused on
mapping large models onto Loihi.
(#279)Added anew exampleshowing how to map larger convolutional networks to Loihi (applied to CIFAR-10
dataset). (#282)Added aKeras exampleshowing how to directly convert a Keras convolutional network to run on Loihi
using the NengoDL Keras Converter.
(#281)Added support for NxSDK 0.9.8 and 0.9.9.
(#296)Added support for thenengo.RegularSpikingneuron type, when usingLIFRateorRectifiedLinearas the base type (these are equivalent toLIFandSpikingRectifiedLinear, respectively).
(#296)Addednengo_loihi.dvs.DVSFileChipProcess, for getting input from a pre-recorded
DVS file and sending it to the Loihi board.
(#306)ChangedWe improved performance whenprecompute=Falsethrough better spike packing,
larger packets, and communicating to the host over a socket.
(#260)Theprecomputeargument ofSimulatornow defaults toNoneand will be automatically set toTrueif the model can be precomputed.
(#260)Added theadd_to_containerargument toDecodeNeurons.get_ensemble,
which makes it easier to add a decode neurons ensemble to a network.
(#260)Convolutiontransforms withchannels_last=Truenow work with outputs
up to 1024 neurons.
(#261)TheProbehas been renamed toLoihiProbeto mirror theLoihiBlockandLoihiInputclasses, which are conceptually very similar.
It has also been moved fromnengo_loihi.blocktonengo_loihi.probe.
(#264)We now raise a more informative error if connecting to Loihi hardware fails.
(#264)It is now possible to build models with larger ensembles because
the builder can now split large Loihi blocks into smaller ones.
(#264)Modules for discretizing and validating models have been moved to thebuilderdirectory.
(#264)It is now possible to use multi-chip allocators with all models,
including those that cannot be precomputed.
(#266)Allocators likeRoundRobinno longer accept then_chipsparameter.
Instead, the__call__method acceptsn_chips.
(#266)NengoLoihi now supports NxSDK version 0.9.5.rc1.
(#272)NengoLoihi now supports Nengo version 3.1. Support for Nengo 3.0 has been dropped.
(#296)Minimum NengoDL version is now 3.4.0.
(#296)RemovedRemoved theOneToOneallocator, which only worked for one chip.
TheGreedyallocator is identical for models that fit on one chip.
(#266)FixedWe no longer create a spike generator if we are communicating through Snips.
(#260)Fixed an issue in which ignored axons were still having an effect in
convolutional networks where not all input pixels are used in the output.
(#261)Fixed an issue that prevented population spikes to be sent to the chip whenprecompute=True. (#261)Fixed a bug preventing making sparse connections to an ensemble.
(#245,#246)We now ignore TensorFlow and NengoDL if an incompatible version is installed
rather than exiting with an exception.
(#264)We now shut down the connection to the board more reliably, which should
reduce the number of cases in which a model hangs indefinitely.
(#266)LoihiLIFneurons now roundtau_rcto mimic the discretization that occurs on
Loihi, for more accurate simulation in Nengo (this was already done in the rate
equation and NengoDL implementation of this neuron).
(#275)LoihiLIFandLoihiSpikingRectifiedLinearnow add the appropriate NengoDL
builders when instantiated, so they work properly if used in NengoDL without making
a NengoLoihi simulator.
(#248,#275)Fixed bug when probing sliced objects.
(#284)Fixed bug when connecting to a single neuron ensemble with a single scalar
weight. (#287)Added an error if more than 32 “populations” (e.g. convolutional filters) are used
withpop_type=16axons, since this is not yet supported by NxSDK.
(#286)0.10.0 (November 25, 2019)Compatible with Nengo 3.0.0Compatible with NxSDK 0.8.7 - 0.9.0ChangedNengo Loihi now requires NxSDK version 0.8.7 and supports NxSDK version 0.9.0.
(#255)0.9.0 (November 20, 2019)Compatible with Nengo 3.0.0Compatible with NxSDK 0.8.5AddedIt is now possible to slice thepreneurons in a neuron->neuron
connection.
(#226)Connections now supportSparsetransforms.
(#240)A more informative error message is raised if any encoders contain NaNs.
(#251)ChangedConnections from neurons with scalar transforms are now sparse internally.
This allows much larger neuron->neuron connections with scalar transforms.
(#226)Thescipypackage is now required to run Nengo Loihi.
(#240)Increased minimum NengoDL version to 3.0 (and this transitively increases the minimum
TensorFlow version to 2.0).
(#259)Nengo Loihi is now compatible with Nengo version 3.0.0.
(#259)FixedFixed a bug in whichscipywas not imported properly in some situations.
(#252,#258)0.8.0 (June 23, 2019)Compatible with Nengo 2.8.0Compatible with NxSDK 0.8.5ChangedNengo Loihi now requires NxSDK version 0.8.5.
(#225)0.7.0 (June 21, 2019)Compatible with Nengo 2.8.0Compatible with NxSDK 0.8.0 - 0.8.1AddedAddedRoundRobinallocator, which allows networks to be run across
multiple chips (multi-chip) by assigning each ensemble to a different chip
in a round-robin format. This allocator can be selected using thehardware_optionsargument when creatingnengo_loihi.Simulator.
(#197)Added support forEnsemble.neurons->Ensembleconnections.
(#156)ChangedSwitched to nengo-bones templating system for TravisCI config/scripts.
(#204)It is no longer possible to passnetwork=NonetoSimulator.
Previously this was possible, but unlikely to work as expected.
(#202)Better error messages are raised when attempting to simulate networks
in which certain objects participating in a learning rule are on-chip.
(#202,#208,#209)Nengo Loihi now requires at least NxSDK version 0.8.0.
(#218)The default intercept range set bynengo_loihi.set_defaults()is now
(-1, 0.5), instead of (-0.5, 0.5).
(#126)Obfuscated non-public information related to Intel’s NxSDK.
(#228)FixedThe splitting and passthrough removal procedures were significantly
refactored, which fixed an issue in which networks could be modified
in the splitting process.
(#202,#211)It is now possible to make connections and probes with object slices
(e.g.,nengo.Probe(my_ensemble[0])).
(#202,#205,#206)We no longer disable the Nengo decoder cache for all models.
(#202,#207)Transforms to on-chip neurons are now applied on-chip,
which avoids scaling issues and large off-chip transforms.
(#126)0.6.0 (February 22, 2019)Compatible with NxSDK 0.7.0 - 0.8.0ChangedNew Nengo transforms are supported, includingnengo.Convolution. Many of
the classes previously inconv.pyhave been moved to Nengo as part of
this transition. The MNIST convnet example demonstrates the new syntax.
(#142)Emulator now fails for any cx_base < 0, except -1 which indicates
an unused axon.
(#185)Noise now works correctly with small exponents on both the chip and
emulator. Previously, the emulator did not allow very small exponents, and
such exponents produced noise with the wrong magnitude on the chip.
(#185)Models trained using NengoDL use tuning curves more similar to those
of neuron on the chip, improving the accuracy of these model.
(#140)RemovedRemoved theNIFandNIFRateneuron types. These types were only used
for encoding node values in spikes to send to the chip, which can be done
just as well withnengo.SpikingRectifiedLinearneurons.
(#185)Removed the unused/untestedSynapse.set_diagonal_weights.
(#185)FixedObjects in nengo-loihi will have the same random seeds as in
nengo core (and therefore any randomly generated parameters, such as
ensemble encoders, will be generated in the same way).
(#70)Seeded networks that have learning are now deterministic on both
emulator and hardware.
(#140)0.5.0 (February 12, 2019)Compatible with NxSDK 0.7.0 - 0.8.0AddedAllowLIF.min_voltageto have effect. The exact minimum voltage on the
chip is highly affected by discritization (since the chip only allows
minimum voltages in powers of two), but this will at least provide something
in the ballpark.
(#169)Population spikes can now be used to send information more efficiently
to the chip. Population spikes are necessary for larger models
like those using CIFAR-10 data.
(#161)ChangedPES learning in Nengo Loihi more closely matches learning in core Nengo.
(#139)Learning in the emulator more closely matches learning on hardware.
(#139)The neurons used to transmit decoded values on-chip can be configured.
By default, we use ten pairs of heterogeneous neurons per dimension.
(#132)Internal classes and functions have been reorganized and refactored.
See the pull request for more details.
(#159)Simulator now gives a warning if the user requests a progress bar, instead
of an error. This avoids potential problems innengo_guiand elsewhere.
(#187)Nengo Loihi now supports NxSDK version 0.8.0.
Versions 0.7.0 and 0.7.5 are still supported.
(#188)FixedWe integrate current (U) and voltage (V) more accurately now by accounting
for rounding during the decay process. This integral is used when
discretizing weights and firing thresholds. This change significantly
improves accuracy for many networks, but in particular dynamical systems
like integrators.
(#124,#114)Ensure things in the build and execution happen in a consistent order from
one build/run to the next (by usingOrderedDict, which is deterministic,
instead ofdict, which is not). This makes debugging easier and seeding
consistent.
(#151)Probes that use snips on the chip (when running withprecompute=False)
now deal with negative values correctly.
(#169,#141)Filtering for probes on the chip
is guaranteed to use floating-point now (so that the filtered output
is correct, even if the underlying values are integers).
(#169,#141)Neuron (spike) probes can now be filtered withsynapseobjects.
(#182,#183)0.4.0 (December 6, 2018)Compatible with NxSDK 0.7.0AddedAdded version tracking to documentation.ChangedAn error is now raised if
a learning rule is applied to a non-decoded connection.
(#103)Switched documentation to newnengo-sphinx-theme.
(#143)FixedSnips directory included when pip installing nengo-loihi.
(#134)Closingnengo_loihi.Simulatorwill now close all the inner
sub-simulators as well.
(#102)0.3.0 (September 28, 2018)Compatible with NxSDK 0.7.0AddedModels can now use thenengo.SpikingRectifiedLinearneuron model
on both the emulator and hardware backends.Models can now run with differentdtvalues
(the default is 0.001, or 1 millisecond).Added support for Distributions on Connection transforms.ChangedNow compatible with NxSDK 0.7. We are currently not supporting
older versions of NxSDK, but may in the future.Models will not be precomputed by default. To precompute models,
you must explicitly passprecompute=Truetonengo_loihi.Simulator.Models that do not run any objects on Loihi will raise an error.Ensemble intercept values are capped to 0.95 to fix issues with
the current discretization method.FixedTuning curves now take into account the Loihi discretization,
improving accuracy on most models.PES learning can now be done with multidimensional error signals.Manually reset spike probes when Simulator is initialized.Several fixes to filtering and connecting
between objects on and off chip.0.2.0 (August 27, 2018)First public alpha release of Nengo Loihi!
If you have any questions,
pleaseask on our forumand if you run into any issueslet us know.0.1.0 (July 4, 2018)Pre-alpha release of Nengo Loihi for testing at the
2018 Telluride neuromorphic engineering conference.
Thanks to all participants who tried out
this early version of Nengo Loihi
and provided feedback.