Links
Tags
apache
armenia
books
bsd
c
c++
chips
cinema
concurrency
cooking
database
dragonfly
erlang
filesystem
freebsd
fun
hardware
java
javascript
json
languages
linux
lyric
mac_osx
mail
math
misc
music
personal
poems
presentation
programming
python
references
ruby
rubyjs
scm
software
spiking_neural_net
study
sysadm
sysarch
technology
testing
travel
virtualization
web
wee
windows
That’s the topic my study thesis will be about. Don’t mix this up with artificial neuron networks. They are pretty easy to simulate efficiently and easy to implement. Spiking or pulsed neuronal networks are much closer to biological neurons. There are two models of interest: Spike Response Model (SRM) and Leaky Integrate and Fire (LIF). SRM is more general and includes LIF.
I read an interesting paper about how to simulate those networks. At first, you can implent a time-discrete simulator. That is, each second (or any smaller fraction of time) you go through all neurons and calculate their value, synchronously. As the signals might change inbetween a clock cycle, you loose accuracy. To increase accuracy, you have to choose a higher simulation frequency. But this also increases the perfomance impact significantly.
That’s why you want to use a event-discrete simulator. Here, you will only recalculate the outcome of a neuron when there is an incoming signal (a pre-synaptic potential) for this neuron. This is also called an event. If the neuron crosses the firing-threshold, it will trigger an event for another neuron. There is one problem with this approach:
- Delayed firing
It may happen, that this neuron will not cross the firing-threshold immediatly, but after some time. We would loose that spike. So we have to look into the future and calculate when would be the earliest time this neuron could fire (using linear envelopes). We trigger an event for this earliest time, just to see if it really crosses the firing-threshold.
This event list must be ordered earliest event first. In the current implementation of our faculty, this is where most of the time is spend. Sorting the event list. It should be really easy to use a parallel sorting algorithm to solve this problem. Maybe a parallel priority list would be usable as well. Hm, if that’s all, then this study thesis is a piece of cake :). Well, maybe I can do a lot more optimizations. I heard about a paper that parallelizes the simulator to multiple CPUs. I haven’t read it yet, so I can’t say much whether it just parallelizes the event list sorting or the whole simulator. The latter would be more interesting for me ;-)