论文部分内容阅读
随着电子电路领域的飞速发展,计算机的计算能力得到了大幅提升,深度学习神经网络再次迎来了飞速发展的浪潮。全连接神经网络能够处理大规模的数据,提取全部的数据特征,实现大规模数据的分类,因此,仍在图像领域有重要应用。全连接神经网络的训练过程计算复杂,计算量大,领域专家往往使用计算能力出众的GPU设备进行训练;而训练成功的神经网络在处理前向过程时,计算相对简单,因此往往采用FPGA搭载神经网络的前向推断过程。虽然FPGA的计算能力难以赶超同时代的GPU加速设备,但其功耗与GPU相比较低,可以计算全连接神经网络的前向过程。本文提出了一套利用OpenCL在FPGA上高效地实现全连接神经网络的方案,并利用商用的全连接神经网络模型,验证了方案的优化效果,为FPGA上利用OpenCL实现神经网络的设计提供了参考。 本文的主要工作和研究成果主要包括: 1.全连接神经网络算法的实现与优化。传统的FPGA开发利用较为复杂的硬件描述语言,为FPGA的广泛应用带来了挑战。而OpenCL定义了完整的框架,开发者可以利用OpenCL提供的框架针对FPGA进行编程,缩短了开发周期。本文首先利用OpenCL,在FPGA上实现了全连接神经网络模型的各计算模块,并分别针对两个计算热点提出了算法实现与优化方案:针对全连接层数据规模大、数据复用率较低、对带宽要求高的计算特点,本文利用合并偏移量的方式规整计算任务、通过分组划分的方式发掘并行性、同时利用数据复用提升了数据使用效率,降低了访存压力;针对较为复杂的激活函数(如Sigmoid函数),本文分析了泰勒级数法、查找表法、分段函数逼近法三种常用的激活函数实现方式,并衡量了FPGA上适宜的方法;针对激活函数的特征,设计了差分查找表的方式实现激活函数,在保证精度的前提下将查找表压缩,节约了系统中的存储空间。 2.针对系统特征,提出系统级的优化方案。为最大化地利用FPGA系统内的各种资源,本文针对算法实现后的基准系统,根据硬件特征,分析了资源占用情况和流水线、访存情况,利用数据重排、单指令多数据、多流水线、半精化等策略进行了系统优化,平衡了系统中的资源占用情况、扩大了电路规模、提升了系统性能。优化后的版本与基准版本相比,得到了2.19x的加速。优化后,系统的主频达到380MHz,RAM占用率达到94%,DSP占用率达到42%。