GSoC Project Idea 2.1: Alternative code-generation backends for GeNN



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 (, which supports Intel and AMD as well as NVIDIA GPUs or ISPCC (, 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.



This project sounds really interesting to me! I haven’t worked with GeNN before. So could you please tell me how I can contribute to this project?


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:

Spiking neural networks:




Parallel programming:

  • 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 oh, that’s annoying. I’ll go dig in the admin interface to see if there is a setting.


@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.


Great thank you - that’ll definitely help! Is there any way you can stop people in the ‘GSoC Mentor’ group from being new users?


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