"FeNN tutorial", James Knight, Zainab Aizaz & Thomas Nowotny
Introduction
Luckily Zainab has already introduced FeNN but, just in case, it's a RISC-V vector processor, tailored for simulating SNNs on modern UltraScale+ FPGAs. For all the gory details, have a look at our paper.
FeNN is fully programmable while having comparable resource usage and energy requirements to state-of-the-art fixed-function SNN accelerators. However, it supports more complex neuron models and network topologies, and can simulate up to 16 thousand neurons and 256 million synapses per core.
If you wish to install the prototype FeNN toolchain on your own machine, please follow the instructions at https://github.com/neworderofjamie/riscv_ise/. If you're lucky enough to have a Kria KV260 board running Ubuntu to try it out on, the releases on github come with bitstreams.
Tutorial 1
In this tutorial, we are going to implement an Adaptive LIF neuron on FeNN:
Tasks
- Currently this neuron is simulated using the simplest "round-to-nearest" mode. See what affect changing the rounding mode has on the simulation.
- This implementation actually has a bug in it. Can you fix it? It should be implementing the ALIF model described in the method of Bellec et al.
- Implement your favourite neuron model.
Tutorial 2
In this tutorial, we are going to build an SNN capable of classifying MNIST by copying the weights obtained by training using mlGeNN:
Tasks
- We have a Kria KV260 set up for you to use. The PyFeNN tools are installed in
~/riscv_iseon this system and there are scripts implementing various models, including the MNIST classifier in~/riscv_ise/examples. Try running some of these models with the--devicecommand line argument to run them on the FeNN accelerator.