Implementation of a neural network on FPGAs using OpenCL

Description
Artificial Neural Network (ANN) is a computing system designed to mimic the biological neural network. Applications of ANNs include voice recognition, image processing, object classifications and may others.  ANNs are made up of a number of simple, highly interconnected processing nodes or Neurons, which work independently. Since parallelism is inherent in ANNs, implementing them on hardware accelerators such as FPGAs is more efficient compared to the software implementation on sequential machines.

The focus of this lab would be to implement ANNs on FPGAs. FPGAs are typically configured with designs specified using a Hardware Description Language (HDL) such as VHDL or Verilog. However programming in HDL requires a steep learning curve for those unfamiliar with hardware design. Hence in this lab, the ANN algorithms would be implemented in OpenCL, which specifies a C-like language for programming FPGAs (as well as other devices such as GPUs, DSPs etc). This allows programmers with little or no knowledge of hardware design to implement their algorithms on FPGAs easily and quickly.

Beschreibung
Künstliche neuronale Netzwerke (KNN)  sind Berechnungssysteme,  welche biologische neuronale Netzwerke nachahmen. Ihre Anwendungen finden sich in Bereichen wie Spracherkennung, Bildverarbeitung und Objektklassifizierung wieder. KNNs setzen sich aus einfachen, vielfach miteinander vernetzten, unabhängigen Berechnungsknoten zusammen, den sogenannten Neuronen.  Da Parallelität in KNNs ausgenutzt werden kann, sind Implementierungen auf Hardware-Beschleunigern wie FPGAs, potentiell effizienter im Vergleich zu sequentiellen Software-Implementierungen. 

Der Fokus dieses Praktikums zielt darauf ab, KNNs auf FPGAs zu implementieren. Für gewöhnlich werden FPGA Designs in Hardwarebeschreibungssprachen(HDL)  formuliert, wie VHDL oder Verilog. Programmieren in HDLs birgt jedoch große Schwierigkeiten für Anfänger, welche keine Vorerfahrungen mit Hardware-Designs haben, und führen letztendlich zu steilen Lernkurven. Aus diesem Grunde, zielt dieses Praktikum darauf ab, HDLs zu umgehen und stattdessen ANN Implementierungen unter Verwendung von OpenCL durchzuführen. OpenCL ist ein Framework, welches erlaubt, Implementierungen in C-ähnlichen Programmiersprachen zu realisieren und diese auf heterogenen Hardware-Plattformen auszuführen (also FPGAs, GPUs, DSPs ). Dadurch werden Erfahrungen mit Hardwarebeschreibungssprachen obsolet, und Design-Zyklen für FPGAs können drastisch reduziert werden.

 

Sprache: English
Für Bachelor/Master Student

Workload

4 SWS / 3 ECTS

Obligatory group meeting:

     By appointment from: 15/05/2017 - 21/05/2017

Please contact one of the advisors in advance.

 

Aim

Students will learn to implement neural networks on FPGA using OpenCL.

Registrierung / Registration

Dennis Weller <dennis.weller@kit.edu>

Sarath Mohanachandran Nair <sarath.nair@kit.edu>

Supervisor

Prof. Dr. Mehdi B. Tahoori

Dennis Weller, Sarath Mohanachandran Nair