Nengo Conceptual Architecture

I started learning Nengo in 2020 for helping me in solving few of the problems in my work area. I looked into the high level block diagram in the home page and very good details are there to understand Nengo at high level. I would like to understand the relationship with Nengo and the hardware platform. Does it solely depend on Python Engine for building the required executable or it depends on native compilers? Reason for this question is, does simulation runs without python runtime?

If there any elaborate architecture information about Nengo will be really helpful.


Nengo is conceptually divided into two big domains. The “frontend” is the Nengo API (Ensembles, Nodes, Connections, etc.), which is what you use to define the model. The “backend” is the Simulator, which takes that Nengo model and runs it on some hardware platform. The Simulator provides a Python interface for letting the user run a model and view the output data, but under the hood the actual model execution is taking place in whatever the native format is for that hardware platform. The default Nengo simulator (nengo.Simulator) also uses Python for the implementation, so in that case the whole thing is running in Python. But, for example, Nengo DL (nengo_dl.Simulator) is using TensorFlow (which is in turn implemented in native C/CUDA kernels), or Nengo Loihi (nengo_loihi.Simulator) is using NxSDK.

Do I need to write differently for different simulators? REason for this question is, at high level I understand the hardware capabilities in Loihi. Since it provides hardware level support, will code be different? I am assuming Nengo will abstract things for developers. But want to confirm explictly.

No, all the front-end code is the same (i.e. you can take a nengo.Network that runs in nengo.Simulator and run it in nengo_loihi.Simulator). There are also Loihi-specific configuration options you might want to play with, but the model definition itself is the same.