论文部分内容阅读
卷积神经网络(CNN)是一种非常重要的深度学习算法,由于通过它得到的结果识别效率高,因而得到了广泛的重视,成为众多科学领域的研究热点之一。除此之外,它在很多领域应用广泛,例如物体检测,图像识别等领域。目前,以应用为目标的深度学习相关算法发展迅速,这大大拓展了其应用的研究领域。一般来说,深度学习技术包括两个过程:数据训练和数据推断,而这两个过程对硬件资源的需求不同。GPU适用于数据训练阶段,而数据推断阶段则需要在移动设备上,尤其是FPGA。鉴于FPGA具有高性能、灵活、发展周期快速等优点,各种基于FPGA平台的深度卷积神经网络加速器相继被提出。虽然FPGA加速器已经表现出比通用处理器更好的性能,但是在移动设备上加速器设计的难度却并未被降低,尤其是在ARM+FPGA开发板上实现非常困难。现有CNN加速器在设计构造过程中,需要设计人员对CNN各个模块进行描述,传统的方式是通过编写代码或者利用高层次综合技术。显而易见,编写代码过程不仅难度大,而且还可能因为人为因素在编写代码时产生不必要的错误,从而导致开发周期长。这一关键问题得不到解决,就会导致加速器的设计难度加大。本文为了克服上述困难,设计和实现了如下内容:基于自动代码生成技术的CNN设计,其编码采用OpenCL。由于构成不同体系架构的CNN模块代码基本上是相同的,因此可以将自动代码生成技术应用到硬件卷积神经网络加速器上。该方法利用自动代码生成器自动地生成与卷积神经网络各模块相一致的OpenCL代码,然后再利用FPGA对生成的OpenCL代码进行模拟和仿真。本文中,主要从基于代码模板、系统网络结构文件、生成规则文件的自动代码生成器方面进行设计,从而构成自动代码生成系统。作为案例研究,我们在实验平台DE10_Standard FPGA开发板上搭建了基于自动代码生成的CNN,并将其与之前的方法作对比。在大约100MHz的时钟频率下,在FPGA板卡上我们实现并达到了0.224 GOPS/DSP的最高性能密度,这一结果优于之前大多数的方案。