GeNN is a C++ library that generates code for efficiently simulating Spiking Neural Networks using GPUs. Currently, GeNN generates CUDA, OpenCL code meaning that it can target a wide range of GPUs . However, for simulating smaller models, focused targeting of SIMD CPUs may be advantageous. For this project you will develop a new GeNN code-generation backend for ISPC (http://ispc.github.io/), which targets the SIMD units in a wide range of modern CPUs using a CUDA-like programming model.
Skills required: C++, Single Instruction Multiple Thread (SIMT) programming
Hi everyone, My name is Saurabh. I am a final year Computer Science and Engineering undergraduate. I am proficient in C++ and have little knowledge about SIMT but I am willing to learn.
I came across this project idea while going through the ideas google doc of INCF and found it interesting. It would be very kind if someone could guide me on how to get started with this particular project.
Thanks for the interest in our project! Sounds like you have exactly the sort of skills required for this project. Good first steps would be getting familiar with ISPC via the materials linked to from http://ispc.github.io/ and with GeNN via the documentation and tutorials here.
You could have a go at implementing something in ISPC e.g. something you’ve worked on during your degree (I’d love to see what you create if you do this!)
Alternatively, digging a little deeper in the following areas might be good preparation for writing your application:
Have a look at the CUDA code generated by GeNN (it will be generated in a directory ending in _CODE alongside your model) and think about the similarities/differences between this and ISPCC