基于改进动态配置的FPGA卷积神经网络加速器的优化方法①
2020-04-21陈庆清王海霞张怡龙刘义鹏梁荣华
陈 朋 陈庆清 王海霞 张怡龙 刘义鹏 梁荣华
(*浙江工业大学计算机科学与技术学院 杭州 310000) (**浙江工业大学信息工程学院 杭州 310000)
0 引 言
近年来,由于卷积神经网络(convolutional neural network,CNN)的结构层次越来越深,在图像分类、目标检测、目标跟踪[1]等计算机视觉领域都得到了广泛的应用,但高计算复杂度和大内存占用是硬件加速的瓶颈,需要开发更高效的硬件加速解决方案来驱动实时应用程序[2]。Li等人[3]提出了基于GPU的大规模递归神经网络的高效实现。Li等人[4]分析了GPU加速器潜在的性能瓶颈。随着CNN模型越来越大、越来越深,CNN加速器需要更多的计算操作和数据访问,虽然GPU具有强大的计算能力,但也存在着功耗较高、体积较大和成本较高等问题。
现场可编程门阵列(field programmable gate arrang, FPGA)具有大量阵列形式逻辑、运算单元,在尺寸、功耗和并行运算方面都比GPU有优势[5],具有高性能、低功耗、使用灵活方便等优点[6]。传统构造FPGA的卷积神经网络的方式是基于寄存器传输级(register transfer level,RTL)描述语言设计的。郭晓丹等人[7]在FPGA上实现了单比特BP人工神经网络,采用了低环路延迟加法器、混合信号乘法器来减少硬件消耗,提高运算精度。Han等人[8]在FPGA平台上设计的网络加速器,其能源效率是CPU的40倍,GPU的11.5倍。林军等人[9]提出了基于数据流水线的资源管理,冯煜晶等人[10]针对流水线停顿提出了动态指令调度机制。Li等人[11]采用流水线结构达到565.94 GOP/s和391 fps的峰值性能。但传统的基于RTL设计的神经网络仍然具有流程复杂、周期较长和优化空间较小等问题[12]。Ma等人[13,14]基于RTL设计了可扩展的自动编译器,但仍然无法避免流程复杂、周期较长等问题。……
