NengoLoihi v1.0.0 released

The Nengo team is thrilled to announce the release of NengoLoihi version 1.0.0.

What is NengoLoihi?

NengoLoihi is a backend for the Nengo neural simulator allowing standard spiking Nengo models to run on Intel’s new Loihi neuromorphic chip. NengoLoihi includes an emulator so that you can develop spiking neuron models for Loihi without having access to hardware.

How do I use it?

Once installed, NengoLoihi simulates Nengo networks. After defining your network, instead of simulating it with

nengo.Simulator(model)

do

nengo_loihi.Simulator(model)

and that’s it!

What’s new?

Improved communication speed

We improved communication speed between the host machine (running NengoLoihi in Python) and the Loihi board, particularly when using the precompute=False option on the Simulator. This is most critical for applications where a real-time feedback loop is essential, for example controlling a robot arm.

We made use of these changes to run our robot arm simulation in real-time on Loihi. A video of the simulation is available here and shows that the Loihi implementation is faster than the equivalent CPU implementation. For more detail about applying adaptive control methods on Loihi, see the adaptive control notebook.

Automatic ensemble splitting

Prior to this release, NengoLoihi constrained ensembles to have 1024 neurons or fewer, such that each one could fit on its own Loihi core. In this release, we remove that restriction by automatically splitting large ensembles behind the scenes to fit across multiple Loihi cores. This makes it much easier to transfer larger Nengo networks to Loihi, with little to no changes required.

For networks that do not use nengo.Convolution transforms, the default parameters for ensemble splitting often work well, with no changes required. For networks that do use nengo.Convolution transforms, you may need to specify how to split an ensemble across multiple cores. This can be done using the BlockShape configuration option. For detailed help on fitting large networks onto Loihi, see the splitting large ensembles tips and tricks document. For a practical example of a convolutional network, see the updated CIFAR-10 example, now included with NengoLoihi.

More support for multi-chip networks

Along with the automatic ensemble splitting, we also support larger models by adding better support for multi-chip models.

The default allocator is now a multi-chip allocator called Greedy. This allocator will fill all the cores on one chip first, before requesting an additional chip. This means that for any model using fewer than the 128 cores available on one chip, behaviour should remain the same. For any model that uses more than 128 cores, the default allocator will automatically start using more chips. The maximum number of chips defaults to two, to be compatible with any existing Loihi device. If your Loihi device has more chips available, you can change this with the n_chips argument in the hardware_options dictionary when creating your nengo_loihi.Simulator.

We also have better support for connections that use population axons under the hood (which are currently only connections with a Convolution transform). We now support these connections between chips, as well as from the host to the chip. These features are only supported on newer Loihi hardware (Nahuku32) with the newer versions of NxSDK (>= 0.9.5), so we suggest using this setup if possible.

Multi-chip support and ensemble splitting enable much larger models to be run on Loihi in real-time. For examples of these changes in action, see the reworked CIFAR-10 example and the new Keras-to-Loihi example. We’ve also documented some tips for getting models to fit on Loihi.

Other changes

Other additions include an example of the Legendre Memory Unit (LMU) recurrent neural network on Loihi and support for loading Dynamic Vision Sensor (DVS, a.k.a. spiking camera) data from files.

See the full changelog for the complete list of changes.

How do I get it?

If you are using the emulator, then you can simply use pip.

pip install nengo-loihi

If you are setting up NengoLoihi to use Loihi hardware for the first time, see the NengoLoihi installation instructions.

Where can I learn more?

Where can I get help?

You’re already there! If you have any questions about NengoLoihi, please ask in the Loihi category. And if you run in to any bugs or have suggestions for new features, file an issue through Github.

3 Likes