brainstudio-team / NeMo

High-performance spiking neural network simulator
Other
9 stars 4 forks source link

Hi! #3

Closed PabloGN closed 7 years ago

PabloGN commented 7 years ago

Hi, I would like to tell you that I used this software in the past but I saw no improvements from the Sourceforge site and I abandoned in favour of genn-team/genn Each system has its weaknesses and strengths, so I would like to know if you are going to "maintain alive" this project. I hope we can collaborate in this project.

zfountas commented 7 years ago

Dear Pablo,

Thank you for your message! This project is currently being (slowly) maintained by a small team that comprises mainly myself and @pmediano. We are part of the computational neurodynamics group at Imperial College, where this project started, but unfortunately the main author of NeMo is not working with us anymore. This is why the core functionality has not been improved for a while. Since the Sourceforge site, we have mainly:

We are currently in the process of updating the synaptic model of nemo and providing an easier way of defining neural models without having to recompile any C++ code. We would be very keen to collaborate with you on this project as we definitely need extra hands to maintain NeMo alive :)

Do you have any particular ideas in your mind?

Cheers, Zaf

PabloGN commented 7 years ago

Thank you for your work! I have tested NeMo only on CPU both on x86-64 and Raspberry Pi 3, with these options:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DNEMO_TIMING_ENABLED=ON -DNEMO_CPU_OPENMP_ENABLED=ON
make
sudo make install
cd src/examples
./torus --cpu -n 2 -m 100 --benchmark

Results: (PC i7) Speedup wrt real-time: 15.361 (RPi3) Speedup wrt real-time: 1.05319 For me it is very important the performance on Raspberry Pi 3. I am planning artificial vision with this hardware, so I need a couple of thousands of neurons. With GeNN I got results better than real time with 1600 neurons and NeMo gives it with 2048. It depends on connectivity. I also want to prepare a ROS node in a Docker container to encapsulate the network. See Docker Hub. My aim go on the development of an autonomous robot (see this article). Yes, we could collaborate, it can be very interesting :)

zfountas commented 7 years ago

Great, this looks quite interesting. So it seems that NeMo is already optimised enough for what you need right? The most important factor for the speed of these simulations is how many synapses you require in your architecture. Also, whether you need plasticity to be activated all the time.

PabloGN commented 7 years ago

Yes, maybe with STDP enabled it can be slower. I have run the same example under valgrind to find the bottlenecks and to insert more #pragma omp parallel for default(shared) but without deep knowledge of structures, arrays and sizes you can get less performance. I do not know yet which is the proper configuration (delays, topology...) to get the behaviour I want, local connectivity might be better for performance, so I'll tell you...