What Is NIR? Neuromorphic Intermediate Representation Explained
NIR is the closest thing the neuromorphic computing field has to a universal file format - a way to describe a spiking neural network once and run it across simulators and hardware from different vendors.
Neuromorphic Intermediate Representation, or NIR, is a vendor-neutral graph format for spiking neural networks, published in Nature Communications in 2024 and documented at neuroir.org. Before NIR, a model trained in one framework generally had to be rewritten, sometimes substantially, to run on a different simulator or a different vendor's hardware. NIR aims to remove that friction by giving the field a shared description of what a spiking network actually computes, independent of any one tool's internal representation.
What NIR supports today
NIR currently supports 8 simulators - Lava-DL, Nengo, Norse, Rockpool, Sinabs, snnTorch, Spyx, and others in the PyTorch-adjacent SNN ecosystem - and 5 hardware platforms, including Intel's Loihi 2, SpiNNaker 2, and SynSense's Speck and Xylo chips. In practice, this means a model can be exported from one supported tool and imported into another without manual translation of the underlying network structure.
Why a vendor-neutral format matters right now
This portability matters more than it might seem on paper. As covered in our piece on Intel's Lava framework going archived, tooling in this space can lose active maintenance with little warning. A model trapped in a single vendor's proprietary export format becomes harder to move forward when that happens. A model exported to NIR retains a path to other NIR-supporting tools regardless of what happens to the tool that originally produced it.
Where NIR tooling still struggles: residual networks
NIR's biggest practical limitation today is architectural, not conceptual. Reference NIR tooling round-trips simple feed-forward graphs reliably, but commonly struggles with residual architectures - networks like ResNet that have skip connections requiring multiple input branches to be summed correctly at a single node. Getting this right requires a topological execution order that explicitly handles multi-input summation, which isn't implemented consistently across NIR tooling.
NeuroCUDA's NIR executor (nir_executor.py) addresses this specific gap using Kahn's algorithm for topological sorting with explicit multi-input summation at branch nodes. The result is verified bit-exact on a full ResNet-18 round-trip - 0.000000 maximum absolute difference between the original and NIR-round-tripped model's outputs. This is a narrow, specific contribution: it doesn't replace the broader NIR ecosystem, it closes one well-defined gap in it.
| NIR capability | Reference tooling | NeuroCUDA's executor |
|---|---|---|
| Feed-forward graph round-trip | Reliable | Reliable |
| Residual / skip-connection graphs | Known difficult case | 0.000000 max abs diff, bit-exact |
| Supported simulators | 8 (Lava-DL, Nengo, Norse, Rockpool, Sinabs, snnTorch, Spyx, etc.) | Exports standard NIR, compatible with all |
| Supported hardware | 5 (Loihi 2, SpiNNaker 2, Speck, Xylo, etc.) | Exports standard NIR, compatible with all |
Using NIR with NeuroCUDA
import neurocuda snn_model = neurocuda.convert(your_pytorch_model, train_loader) neurocuda.to_nir(snn_model, "model.nir")
Once exported, model.nir is not tied to NeuroCUDA - it can, in principle, be loaded by any tool that implements the NIR specification, which is the entire point of the format.
Sources & further reading
- NIR specification and documentation, neuroir.org
- NIR paper, arXiv:2311.14641, published in Nature Communications (2024)
- NeuroCUDA source and NIR executor implementation, github.com/Krishnav1/neurocuda
Frequently asked questions
What is NIR in neuromorphic computing?
NIR, or Neuromorphic Intermediate Representation, is a vendor-neutral graph format for describing spiking neural networks so they can move between different simulators and hardware platforms without being rewritten for each one. It is documented at neuroir.org and was published in Nature Communications in 2024.
Which simulators and hardware support NIR?
NIR supports 8 simulators, including Lava-DL, Nengo, Norse, Rockpool, Sinabs, snnTorch, and Spyx, and 5 hardware platforms, including Intel Loihi 2, SpiNNaker 2, and SynSense's Speck and Xylo chips.
Does NIR handle residual networks like ResNet correctly?
Reference NIR tooling round-trips simple feed-forward graphs reliably but commonly struggles with residual architectures that have skip connections, because correctly summing multiple incoming branches at a node during execution requires careful topological handling that isn't always implemented.
What is the benefit of exporting a model to NIR instead of a vendor-specific format?
A model exported to NIR is not locked to the tool that created it. If the original tool is discontinued or archived, as happened with Intel's Lava framework, a NIR-exported model can still move to other NIR-compatible simulators and hardware.