Syncing SpiNNaker to a real-time data source

37 views
Skip to first unread message

Pedro Félix

unread,
May 19, 2025, 10:10:44 AMMay 19
to SpiNNaker Users Group
Hello,
I have a project where I am using SpiNNaker for real-time detection of patterns in time-series data. I can send input spikes to SpiNNaker (using a SpikeInjector) and receive the outputs using "activate_live_output_for".

My strategy has been to initialize the simulation first, then run with run_forever, and implement additional commands.

I need to know the simulation time when I started receiving data, so that I can sync the spikes obtained from SpiNNaker with the input time series and calculate latency, etc...
I was thinking of adding a syncing neuron, that fires only when the data starts being sent to SpiNNaker, but I can't seem to get any output from sync_out...

Is there something I am doing wrong? Is this an adequate approach?
I prepared a simple script that illustrates my problem. 

Best,
Pedro
net.py

Iffat Iqbal

unread,
Jul 21, 2025, 2:20:38 AMJul 21
to SpiNNaker Users Group
I will piggyback on this, as it is coincidentally what I was about to ask.

Is there any way to receive data in live time and then implement some sort of controller that can adjust certain parameters of injected current as it receives feedback. If not, what do you think would be the best hardware alternative for this!

Andrew Rowley

unread,
Jul 21, 2025, 2:40:44 AMJul 21
to Iffat Iqbal, SpiNNaker Users Group
Hi,

Apologies, I must have missed the original message here, as I don't see a reply.

Provided you can speak to the SpiNNaker board, you should be able to send spikes and receive responses in "real-time".  There will of course be a latency between sending and receiving, but as soon as the message is received at the board and processed, the spike will be injected into the network.  Similarly, when you "activate_live_output_for" on a population, any spikes it sends should be sent out of the board at least by the end of the timestep in which they were generated, along with the timestep of generation.

Finding the actual time on the clock when these things happen (reception and transmission) is much harder to do.  There is a time on SpiNNaker that is set when a program starts executing, but there is nothing at present that records the time of reception or transmission beyond the timestep itself.  The timestep is sent with the spikes for live output, and you can of course do pop.record("spikes") on the sending population to see what should have been sent.  For live input, you can do injector.record("spikes") to record the spikes received and then see these after simulation.

There is some more information on the live input and output in our tutorials:

If you are still having problems with this, please let us know where you are running things as this might help to work out what could be going wrong.

Andrew :)


From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> on behalf of Iffat Iqbal <iffati...@gmail.com>
Sent: 18 July 2025 19:32
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: [SpiNNaker Mailing List] Re: Syncing SpiNNaker to a real-time data source
 
--
You received this message because you are subscribed to the Google Groups "SpiNNaker Users Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to spinnakeruser...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/spinnakerusers/c1d411ee-0db6-45f5-8563-283d343934cbn%40googlegroups.com [groups.google.com].

Andrew Rowley

unread,
Jul 21, 2025, 3:00:36 AMJul 21
to SpiNNaker Users Group
Hi,

One additional note is that there were some experiments on I/O on SpiNNaker in this paper (which was about another interface to SpiNNaker called "SPIF"):

There are some graphs of latency when using Ethernet there, which show a latency of 0.788ms +- 0.292ms.  Some of this includes the time for processing of the spikes sent to and from the machine as well as is evidenced by a difference in using the SPIF interface directly vs. using it via the SpyNNaker software route.  In the latter case, when you ask for a spike to be sent, the SpiNNaker multicast key to use is looked up in a database for the Population before sending to the machine.  Similarly, when receiving a spike, the key is looked up and converted to a neuron index within a population.  At least the reception lookup can be avoided with some configuration of the receiver on SpiNNaker which can then do some decoding directly before sending spikes.

Andrew :)

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> on behalf of Andrew Rowley <Andrew...@manchester.ac.uk>
Sent: 21 July 2025 07:40
To: Iffat Iqbal <iffati...@gmail.com>; SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: Re: [SpiNNaker Mailing List] Re: Syncing SpiNNaker to a real-time data source
 
Hi,

Apologies, I must have missed the original message here, as I don't see a reply.

Provided you can speak to the SpiNNaker board, you should be able to send spikes and receive responses in "real-time".  There will of course be a latency between sending and receiving, but as soon as the message is received at the board and processed, the spike will be injected into the network.  Similarly, when you "activate_live_output_for" on a population, any spikes it sends should be sent out of the board at least by the end of the timestep in which they were generated, along with the timestep of generation.

Finding the actual time on the clock when these things happen (reception and transmission) is much harder to do.  There is a time on SpiNNaker that is set when a program starts executing, but there is nothing at present that records the time of reception or transmission beyond the timestep itself.  The timestep is sent with the spikes for live output, and you can of course do pop.record("spikes") on the sending population to see what should have been sent.  For live input, you can do injector.record("spikes") to record the spikes received and then see these after simulation.

There is some more information on the live input and output in our tutorials:
Reply all
Reply to author
Forward
0 new messages