Hi @sizeras, and welcome to the Nengo forums!
In the NengoGUI, the speed indicator in the bottom left gives you an approximation of how fast your model is running compared to real time. As an example, if it reads “1”, that means (using the default simulation
dt of 1ms), one simulation timestep takes 1ms to complete. If, one simulation timestep took 2ms to complete, the speed indicator would read “0.5”.
The simulation speed of a Nengo model is dependent on a few factors:
- The size of your Nengo model. This is roughly proportional to the number of neurons in your model.
- The hardware you are using.
- Whether or not your are running NengoGUI.
Regarding model size, naturally, the larger your model, the slower the simulation will run. This is because your computer needs to run the neuron computation for each neuron in your model. As a quick example, I’ve personally built models with several million neurons, and that took about 3-4 days to run about 30s of simulation time (i.e., the speed indicator would have been ~0.000086)
The computer hardware you are running your Nengo model on will also affect your simulation speed. If, for example, you are running it on a laptop processor, it will likely run slower than a desktop or server class processor. Similarly, you can use a package such as NengoOCL to run your simulation on your GPU (if you do have a supported GPU) and this will run your model significantly faster. Using the million+ model example from above, using GPU acceleration decreased the runtime from several days to about 30mins (but the speed indicator would still only be about ~0.017).
If your model is especially complex (i.e., it contains a lot of connections), and you have a lot of them displayed in NengoGUI, it has been known to reduce the speed of your simulation. This is because NengoGUI uses some of your computer resources to render the graphical elements (the lines and boxes and circles) that represent your Nengo model. To get around this, you can run your Nengo model outside of the NengoGUI environment.
You can run Nengo models outside of the NengoGUI environment using the
nengo.Simulator object. The Nengo example here illustrates how you would do it. Note that if you want to run your Nengo model outside of the GUI environment, you’ll need to write your own code to display graphs and such (see here for examples).