/CNNPU

Convolutionnal Neural Network Processing Unit. C++ model of a convolutionnal neural network accelerator on FPGA

Primary LanguageC++

Convolution Neural Network Processor

A C++ model of a convolutionnal neural network accelerator on FPGA

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Cloning the project

First downlaod the project on your machine:

git clone [Project URL]

Prerequisites

All dependencies are already in the project folder lib/, so no need to install anything.

This project is heavily dependent on the libfi library. libfi allow the simulation of fixed point number. It is in template form to allow easy variable type swap. Been Templatized, you will find most of the modules code in the include/.hpp files.

The automated tests are made with the help of the Google Test library.

Compiling the code

The compiling is done withe the help of cmake. This command executed at the project root (CNNP/) should build everything for you.

cmake

Compiling the documentation

TODO -> doxygen

Running the tests

The test can be found in src/test folder. There is one test file for every module containing unit tests for this module. Executing one should run all the test for that module. The test are not true unit test in the fact that no mocking is used for now. To properly test the whole processor, smaller module should be tested first. PE, then CE, then Controller, then the CNNP.

To add tests, the Google Test framework need to be understood. The google test suite is open source and can be found HERE

Using the processor model

TODO

Coding guidelines

Versioning

We use Git for versioning.

Authors

  • Thierry Pouplier - Initial work

Acknowledgments

  • Thanks to François Leduc-Primeau for helping me with this project
  • Sze, V., Chen, Y., Yang, T. and Emer, J. (2017). Efficient Processing of Deep Neural Networks: A Tutorial and Survey. Proceedings of the IEEE, 105(12), pp.2295-2329.
  • Sankaradas, M., Jakkula, V., Cadambi, S., Chakradhar, S., Durdanovic, I., Cosatto, E., & Graf, H. P. (2009). A Massively Parallel Coprocessor for Convolutional Neural Networks, 53–60. https://doi.org/10.1109/ASAP.2009.25