Skip to content

Neuromorphic Intermediate Representation reference implementation

License

Notifications You must be signed in to change notification settings

neuromorphs/NIR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c40ee70 · Feb 13, 2025
Feb 13, 2025
Jun 1, 2024
Nov 25, 2024
Feb 13, 2025
Sep 6, 2024
Feb 13, 2025
Apr 22, 2024
Aug 16, 2024
Oct 17, 2023
Sep 20, 2024
Aug 16, 2023
Apr 24, 2024
Nov 17, 2024
Jul 26, 2023
Jul 6, 2024
Feb 13, 2025
Jul 5, 2023
Aug 16, 2024

Repository files navigation

NIR Logo

NIR - Neuromorphic Intermediate Representation

Nature Communications Paper PyPI - Downloads GitHub Tag Discord

NIR is a set of computational primitives, shared across different neuromorphic frameworks and technology stacks. NIR is currently supported by 7 simulators and 4 hardware platforms, allowing users to seamlessly move between any of these platforms.

NIR is useful when you want to move a model from one platform to another, for instance from a simulator to a hardware platform.

Read more about NIR in our documentation about NIR primitives

See which frameworks are currently supported by NIR.

Usage

Read more in our documentation about NIR usage and see more examples in our examples section

NIR serves as a format between neuromorphic platforms and will be installed alongside your framework of choice. Using NIR is typically a part of your favorite framework's workflow, but follows the same pattern when you want to move from a source to a target platform:

# Define a model
my_model = ...
# Save the model (source platform)
nir.write("my_graph.nir", my_model) 
# Load the model (target platform)
imported_graph = nir.read("my_graph.nir")

See our example section for how to use NIR with your favorite framework.

Frameworks that currently support NIR

Read more in our documentation about NIR support

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

Acknowledgements

This work was originally conceived at the Telluride Neuromorphic Workshop 2023 by the authors below (in alphabetical order):

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

article{NIR2024, 
    title={Neuromorphic intermediate representation: A unified instruction set for interoperable brain-inspired computing}, 
    author={Pedersen, Jens E. and Abreu, Steven and Jobst, Matthias and Lenz, Gregor and Fra, Vittorio and Bauer, Felix Christian and Muir, Dylan Richard and Zhou, Peng and Vogginger, Bernhard and Heckel, Kade and Urgese, Gianvito and Shankar, Sadasivan and Stewart, Terrence C. and Sheik, Sadique and Eshraghian, Jason K.}, 
    rights={2024 The Author(s)},
    DOI={10.1038/s41467-024-52259-9}, 
    number={1},
    journal={Nature Communications}, 
    volume={15},
    year={2024}, 
    month=sep, 
    pages={8122},
}