PyNN is a Python based framework for describing neuronal network models.
It is widely used in the computational neuroscience and neuromorphic computing communities. A PyNN interface for GeNN has already been developed (https://github.com/genn-team/pynn_genn) so that users of PyNN are able to benefit from accelerated GPU simulations with GeNN. However, there are several areas in which it could be improved:
Offloading initialisation of connectivity and initial state to the GPU.
Replacing spike sources connected with one-to-one connectivity with current sources to reduce spike processing overheads.
A final stretch goal would be doing some benchmarking of the performance of simulations implemented directly in GeNN and using PyNN GeNN.
Skills required: Python, PyNN, C/C++; experience with neuronal network simulations and SWIG would be helpful.
If you are interested in getting started with this project, a good first step might be to install PyNN GeNN (I would recommend using it with the GeNN 4.1.0 release obtained from our release page) and try some of the examples in the official PyNN repository. Then maybe have a look at the PyNN documentation and start having a look at the source code for PyNN GeNN to see how they interface. There is also a fairly well-populated issue tracker.
I am Alish Dipani, an undergraduate student from India. My research interests are applications of Artificial Intelligence in biology and neuroscience. I already have some research experience with Spiking Neural Networks and I am highly interested in applications of SNNs. Currently, I am working as a research intern at TCS innovation labs where I am working on hand gesture recognition using SNNs on SpiNNaker. I have attached my resume here.
I also have experience with Open Source as I participated in GSoC 2019 with the Ruby Science Foundation (Project Link). I worked on Rubyplot: an advanced plotting library for Ruby. I was also selected for the Ruby Association Grant 2019 (Link) for further development on Rubyplot.
This project and project number 7 highly match with my interests and therefore I would love to contribute to these projects.
Since I do not have any experience with GeNN, I will start by familiarising myself with GeNN and pyGeNN, please do guide me for the further steps to be taken for contributing.
I am well versed with PyNN as SpiNNaker uses SpyNNaker which is built upon PyNN.
Looking forward to working with you and being a part of the INCF community.
Apologies for the slow response, you sound to have exactly the selection of skills we’re looking for for these projects! As this is more of a software engineering project, getting to know the PyNN GeNN codebase and looking at some issues would be a great preparatory step! I just had a look through and https://github.com/genn-team/pynn_genn/issues/43 would be useful and comes with a fairly minimal example and some implementation suggestions so could be a good starting point.
I’ve had some questions about this project and, regarding the offloading of initialisation, it will probably be worth reading our recent paper in which we describe the rationale behind this and the relevant section of the manual about how this works in C++.
We’ve just made a new release of GeNN (4.2.0) which includes several fixes for PyGeNN which you are likely to find useful if you’re working on this project.