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

simt
c-plusplus
#1

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.

#2

Hello

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?

#3

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:

1 Like
#4
#5

GeNN:

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?)

#6

@jamie oh, that’s annoying. I’ll go dig in the admin interface to see if there is a setting.

#7

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

#8

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

#9

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

#10

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!

#11

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?

#12

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

1 Like
#13

Sure Jamie, I will check out the tutorial. Also, could you please guide me as to how I can write a proposal for this project for GSoC 2019

#14

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

1 Like
#15

Hello Jamie
I am finishing up my first draft of the proposal for this project.
How do I send you my first draft proposal for a review?

#16

Great! Can you share it with us via the GSoC portal? All the instructions should be in the student guide https://google.github.io/gsocguides/student/writing-a-proposal

#17

Awesome. I’ll be uploading it in a few hours after a few final touches.
I’ll update you as soon as that’s done

#18

Hello Jamie, I just submitted my first proposal. Hope you like it

#19

Just in case you missed it, I posted some comments in the google doc

#20

Yupp I am reviewing them now. I’ll post on the forum once I am done with it