Skip to main content

Neuromorphic Intermediate Representation

Project description

NIR Logo

NIR: Neuromorphic Intermediate Representation

NIR provides a standard way to describe arbitrary physical networks. NIR is currently supported by 6 simulators and 4 hardware platforms, allowing users to seamlessly move between any of these platforms.

Neuron models in NIR are defined as dynamical system equations, because time is an essential component of neuromorphic systems.

The goal of NIR is to provide a common format that different neuromorphic frameworks (including spiking neural networks) can convert to and from.

Computational primitives

Read more about in our documentation about NIR primitives

On top of popular primitives such as convolutional or fully connected/linear computations, we define additional compuational primitives that are specific to neuromorphic computing and hardware implementations thereof. Computational units that are not specifically neuromorphic take inspiration from the Pytorch ecosystem in terms of naming and parameters (such as Conv2d that uses groups/strides).

Connectivity

Each computational unit is a node in a static graph. Given 3 nodes $A$ which is a LIF node, $B$ which is a Linear node and $C$ which is another LIF node, we can define edges in the graph such as:

graph LR;
A --> B;
B --> C;

Or more complicated graphs, such as

graph LR;
A --> A;
A --> B;
B --> C;
A --> C;

Format

The intermediate represenation can be stored as hdf5 file, which benefits from compression.

Frameworks that currently support NIR

Framework Write to NIR Read from NIR Examples
Lava-DL
Nengo Nengo examples
Norse Norse examples
Rockpool (SynSense Xylo chip)
Sinabs (SynSense Speck chip)
snnTorch
SpiNNaker2

Acknowledgements

Authors (in alphabetical order):

If you use NIR in your work, please cite the following Zenodo reference

@software{nir2023,
  author       = {Abreu, Steven and
                  Bauer, Felix and
                  Eshraghian, Jason and
                  Jobst, Matthias and
                  Lenz, Gregor and
                  Pedersen, Jens Egholm and
                  Sheik, Sadique},
  title        = {Neuromorphic Intermediate Representation},
  month        = jul,
  year         = 2023,
  publisher    = {Zenodo},
  version      = {0.0.1},
  doi          = {10.5281/zenodo.8105042},
  url          = {https://doi.org/10.5281/zenodo.8105042}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nir-0.2.0.tar.gz (19.0 kB view hashes)

Uploaded Source

Built Distribution

nir-0.2.0-py3-none-any.whl (21.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page