A C++ model of a convolutionnal neural network accelerator on FPGA
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
First downlaod the project on your machine:
git clone [Project URL]
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.
The compiling is done withe the help of cmake. This command executed at the project root (CNNP/) should build everything for you.
cmake
TODO -> doxygen
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
TODO
- Google C++ Style Guide have been used.
- For comments, doxygen commands have been used.
We use Git for versioning.
- Thierry Pouplier - Initial work
- 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