Spiking history

82 views
Skip to first unread message

Alfonso Yamamoto

unread,
May 15, 2024, 9:24:09 AM5/15/24
to SpiNNaker Users Group
Hi Spinnaker team.

I am currently building a model that uses the spiking history for the calculation of neuron's voltage. By spiking history I mean a neuron would keep a history of the spikes it produced (maybe as a timestamp?) and it would pass this info to the neurons connected to it.  
My problem is that there does not seem to be a clear way for me to get this data on the neuron or the synapse model without going into spike processing part of the code (the code on sPyNNaker).  
How would you guys recommend me to do it with only using the templates on sPyNNaker8NewModelTemplate, or if not possible  would you maybe give some hints on how could this be done. 

Best regards,

Alfonso Yamamoto 

Andrew Rowley

unread,
May 16, 2024, 3:25:55 AM5/16/24
to Alfonso Yamamoto, SpiNNaker Users Group

Hi,

 

In general, most neuron models use the spikes arriving at them to calculate the neuron voltage.  Each of these spikes is linked to a weight which is then mathematically linked to the neuron voltage.  This is done on a timestep-by-timestep basis, so the calculation happens over time rather than all at once.  If the weight is set to 1 and a delta model is used, you will get simply a count of spikes arriving from prior neurons at each time step, which you can then use to calculate the voltage “now” so to speak.

 

If you are looking for some more complex relationship, it is indeed hard to map back from a weight arriving and which exact neuron this arrived from.  This would likely require some sort of additional storage to be passed forward from the spike processing.  Note this would be somewhat limiting since you would need to now keep every spike that arrives; most of the current code keeps a sum of weights from spikes in a ring buffer which saves quite a lot of memory space, especially if you also want to consider delays.  In that case you would need a buffer big enough to hold each source neuron identifier that you might receive in each delay slot.  This might become very big very quickly and so exceed the available local memory.

 

If you have more details on what you might need I might be able to give more ideas…

 

Andrew :)

 

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> On Behalf Of Alfonso Yamamoto
Sent: Wednesday, May 15, 2024 2:03 PM
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: [SpiNNaker Mailing List] Spiking history

 

Hi Spinnaker team. I am currently building a model that uses the spiking history for the calculation of neuron's voltage. By spiking history I mean a neuron would keep a history of the spikes it produced (maybe as a timestamp?) and it would

ZjQcmQRYFpfptBannerStart

This Message Is From a New External Sender

You have not previously corresponded with this sender. Please exercise caution when opening links or attachments included in this message.

ZjQcmQRYFpfptBannerEnd

--
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 on the web, visit https://groups.google.com/d/msgid/spinnakerusers/5cdacfc2-fea5-4766-a7ab-f4a9535f3a51n%40googlegroups.com [groups.google.com].

Donal Fellows

unread,
May 16, 2024, 8:29:55 AM5/16/24
to Alfonso Yamamoto, SpiNNaker Users Group, Andrew Rowley

But for the simple case where you’ve actually got two populations of source neurons that you want to distinguish between and don’t actually need to know the individual neurons, that can be handled by a two-excitatory input neuron model (which we have an example of, if I remember the source code right). If you’re only looking to pick out a single neuron, that becomes a very simple input population with the other input neurons remaining a standard population. At that point, it is just a matter of setting up an efficient mapping. (There will be some configurations where that’s very easy indeed.)

 

The details matter very much.

 

Donal Fellows

Senior Research Software Engineer

University of Manchester, UK

Alfonso Yamamoto

unread,
May 24, 2024, 5:14:32 AM5/24/24
to SpiNNaker Users Group
Hi Donal and Andrew,
Thank you for the inputs. To be precise I wanted a model that would keep track of certain amount arriving spikes/weights over a period of time. You could imagine an array holding timestamps, and each array would correspond to a connection with a pre synaptic neuron. 
I have to rethink my approach. 
But in the meantime I have the following error with spinnman. Each image correspond to a different run. The KeyError was run first

Alfonso Yamamoto 
Fraunhofer HHI, DE
Screenshot from 2024-05-24 10-55-44.pngScreenshot from 2024-05-24 10-56-09.png

Andrew Rowley

unread,
Jun 3, 2024, 5:24:12 AM6/3/24
to Alfonso Yamamoto, SpiNNaker Users Group

Hi,

 

The first error seems to be that you don’t have enough space on the board you are using for what you have requested.  This might be in terms of run time or possibly in terms of your models.  I am unsure what you are trying to run in this case, but it might be that you have a calculation of SDRAM incorrect somewhere?

 

The second error appears to be that what you are trying to run has crashed out on the machine with an error.  This probably indicates something wrong in the SpiNNaker code.  You can likely debug by adding log_info statements to the code and then trying to work out where it has gone wrong.  These can then be read from the reports folder, under the date and time of execution, and then in the run_1/provenance_data/app_provenance_data folder there will be a txt file for each core containing any log messages.

 

Andrew :)

 

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> On Behalf Of Alfonso Yamamoto
Sent: Friday, May 24, 2024 10:03 AM
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: Re: [SpiNNaker Mailing List] Spiking history

 

Hi Donal and Andrew, Thank you for the inputs. To be precise I wanted a model that would keep track of certain amount arriving spikes/weights over a period of time. You could imagine an array holding timestamps, and each array would correspond

ZjQcmQRYFpfptBannerStart

This Message Is From a New External Sender

You have not previously corresponded with this sender. Please exercise caution when opening links or attachments included in this message.

ZjQcmQRYFpfptBannerEnd

Hi Donal and Andrew,

Thank you for the inputs. To be precise I wanted a model that would keep track of certain amount arriving spikes/weights over a period of time. You could imagine an array holding timestamps, and each array would correspond to a connection with a pre synaptic neuron. 

I have to rethink my approach. 

But in the meantime I have the following error with spinnman. Each image correspond to a different run. The KeyError was run first

 

Alfonso Yamamoto 

Fraunhofer HHI, DE

 

On Thursday, May 16, 2024 at 2:29:55PM UTC+2 Donal Fellows wrote:

But for the simple case where you’ve actually got two populations of source neurons that you want to distinguish between and don’t actually need to know the individual neurons, that can be handled by a two-excitatory input neuron model (which we have an example of, if I remember the source code right). If you’re only looking to pick out a single neuron, that becomes a very simple input population with the other input neurons remaining a standard population. At that point, it is just a matter of setting up an efficient mapping. (There will be some configurations where that’s very easy indeed.)

 

The details matter very much.

 

Donal Fellows

Senior Research Software Engineer

University of Manchester, UK

 

 

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> On Behalf Of Andrew Rowley
Sent: Thursday, May 16, 2024 8:26 AM
To: Alfonso Yamamoto <alfyama...@gmail.com>; SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: RE: [SpiNNaker Mailing List] Spiking history

 

If you are looking for some more complex relationship, it is indeed hard to map back from a weight arriving and which exact neuron this arrived from.  This would likely require some sort of additional storage to be passed forward from the spike processing.  Note this would be somewhat limiting since you would need to now keep every spike that arrives; most of the current code keeps a sum of weights from spikes in a ring buffer which saves quite a lot of memory space, especially if you also want to consider delays.  In that case you would need a buffer big enough to hold each source neuron identifier that you might receive in each delay slot.  This might become very big very quickly and so exceed the available local memory.

--

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.

Alfonso Yamamoto

unread,
Jun 4, 2024, 2:55:43 AM6/4/24
to SpiNNaker Users Group
Hi Andrew,
Thanks for the response. It was totally a mistake on my model. 
Other than debugging with  log_info statements is there any debbuger that you use ? 

Best regards,
Alfonso

Andrew Rowley

unread,
Jun 4, 2024, 3:00:01 AM6/4/24
to Alfonso Yamamoto, SpiNNaker Users Group

Hi,

 

There is a way to link debugging to gdb:

https://github.com/SpiNNakerManchester/spinnaker_tools/blob/master/tools/gdb-spin

 

I haven’t tried it in quite a while so I don’t know if it still works.  Note though that debugging multiple parallel processes at the same time can be quite tricky, so using log_info output works better in my experience.

 

Andrew :)

 

From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> On Behalf Of Alfonso Yamamoto
Sent: Tuesday, June 4, 2024 7:54 AM
To: SpiNNaker Users Group <spinnak...@googlegroups.com>
Subject: Re: [SpiNNaker Mailing List] Spiking history

 

Reply all
Reply to author
Forward
0 new messages