GeNN is a C++ library that generates code for efficiently simulating Spiking Neural Networks using GPUs. Currently, GeNN generates CUDA code meaning that it is only compatible with NVIDIA GPUs. However, we are in the process of refactoring the GeNN code generator to facilitate adding additional code generation targets.
For this project you will develop a new code-generation backend for GeNN to target an alternative parallel computing platform. Choices include OpenCL (https://www.khronos.org/opencl/), which supports Intel and AMD as well as NVIDIA GPUs or ISPCC (http://ispc.github.io/), which targets the SIMD units in a wide range of modern CPUs.
Skills required: C++, Single Instruction Multiple Thread (SIMT) programming
Mentors: Jamie Knight & Thomas Nowotny, Sussex U, UK.
Thank you for your interest in our project! For now Iām not sure if thereās a lot you can contribute as, if you were to be to accepted on this project, youād be working on a as-yet un-released version of GeNN that is structured significantly differently from the current master version. However, it might be worth you having a look at some of the following links so you can make a more informed decision before writing an application:
The links to both of the libraries we suggest lead to tutorials etc - have a look at these and try and understand how they work.
(Apologies for the reply, spread over multiple messages - this forum seems to be very restrictive regarding how many links you can post @malin - is there anything we can do about that?)
@jamie: I found a cap on how many links a new user is allowed to have per post. It was two, I doubled it to four for now. Will talk to the rest of the team about what is a good default setting.
Also, for @Karthik_Guru and any other students interested in making small contributions as they learn about GeNN, I have gone through GeNNās github issues and marked some which donāt require delving too deeply into the code as āgood first issueā.
Thanks a ton, @jamie. I did check out the āSpiking NNsā project 2.2. I think the GeNN resources are the same. Parellel programming resources are also super helpful.
As for github, Iāll try contributing to the āgood firstā issues.
Thanks again!
Hey @jamie
I am trying to solve issue #230 in github thatās been marked as āgood first issueā. Not really sure how to go about it. Could you please give me a heads up?
The new version of GeNN that will be the basis for this project is now very nearly ready - I will be working on updated tutorials etc over the next week but, for a more concrete idea of what this project will involve, code generation backends now implement this BackendBase interface. As examples of what such backends look like there is a simple single-threaded CPU backend and a more complex CUDA backend
So I guess your first decision is to pick what parallel computing platform you want to target. Then, based on the resources Iāve posted in this topic, start thinking about what steps you would need to take to implement a backend based on this platform.
There is also plenty of general information on the structure of a good GSoC proposal on the GSoC site