  Significant effort has been placed on the development of toolflows that map
Convolutional Neural Network (CNN) models to Field Programmable Gate Arrays
(FPGAs) with the aim of automating the production of high performing designs
for a diverse set of applications. However, within these toolflows, the problem
of finding an optimal mapping is often overlooked, with the expectation that
the end user will tune their generated hardware for their desired platform.
This is particularly prominent within Streaming Architecture toolflows, where
there is a large design space to explore . In this work, we establish the
framework SAMO: a Streaming Architecture Mapping Optimiser. SAMO exploits the
structure of CNN models and the common features that exist in Streaming
Architectures, and casts the mapping optimisation problem under a unified
methodology. Furthermore, SAMO explicitly explores the reconfigurability
property of FPGAs, allowing the methodology to overcome mapping limitations
imposed by certain toolflows under resource-constrained scenarios, as well as
improve on the achievable throughput. Three optimisation methods - Brute-Force,
Simulated Annealing and Rule-Based - have been developed in order to generate
valid, high performance designs for a range of target platforms and CNN models.
Results show that SAMO-optimised designs can achieve 4-20x better performance
compared to existing hand-tuned designs. The SAMO framework is open-source:
https://github.com/AlexMontgomerie/samo.
