低端 FPGA 有126 个乘累加单元,最大实现 11 x 11 卷积核或两个 7 x 7 卷积核,相应理论最大速率为每秒 24.5 次运算(时钟为 250 MHz)。然而试验中使用了单个 7 x 7 卷积器,因为当时使用的网络不需要更大的卷积核,相应理论最大速率每秒 12 G次运算。
Zynq SoC嵌入式方案 nn-X【9】
在这篇文章《A 240 G-ops/s Mobile Coprocessor for Deep Neural Networks》中使用 Zynq SoC 实现了 CNN 加速器,架构如下图所示。 卷积器的架构没有给出,但根据文章描述,推测与方案一基本一致。所有计算都以定点格式 Q8.8 进行。该方案实现了 8 路 并行引擎,每个引擎提供 10 x 10 卷积器,等效计算能力达到每秒 227 G 次运算(乘加为两次运算)。由于使用 Q8.8 定点形式计算,每个乘加器都可以使用一个 DSP 单元实现,共需要 800 个 DSP单元(总共 900 个)。
方案三:SIMD 卷积引擎【3】
前面两种方案均为面向卷积核的卷积器,具有如下缺点:当卷积核尺寸变化时(如AlexNet 第一个卷积层尺寸为 11 x 11,而后面卷积核逐渐缩小为 5 x 5 和 3 x 3),不能充分发挥硬件的并行计算性能,造成大量的资源浪费。随着新型网络更多奇异的卷积核(如NIN 中的 1 x 1 卷积核、 1 x N 或 N x 1卷积核),资源浪费情况会越来越严重,甚至变为串行计算结构。方案三则采用很多算法技巧,包括将大图像分块、通道优先累加、兼顾访存和计算等,实现了 SIMD 型计算架构,不再与具体卷积核尺寸挂钩,运行时计算资源利用率更高。
参考文献 【1】Amos, Jagath. FPGA IMPLEMENTATIONS OF NEURAL NETWORKS. Springer 2006. 【2】Yann LeCun, et al. CNP : An FPGA-based Processor for Convolutional Networks. 2009. 【3】Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks, 2015, ACM 978-1-4503-3315-3/15/02 【4】Accelerating Deep Convolutional Neural Networks Using Specialized Hardware, 2015. 【5】Stratix 10 Device Overview, Altera, 2015.12. 【6】 A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. NIPS 2012. 【7】 J. Cong and B. Xiao. Minimizing computation in convolutional neural networks. ICANN 2014. 【8】 http://www.xilinx.com/products/boards-and-kits/ek-v7-vc707-g.html 【9】 A 240 G-ops/s Mobile Coprocessor for Deep Neural Networks, 2013 【10】A. Putnam, et al., A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, International Symposium on Computer Architecture, 2014. 【11】http://auvizsystems.com/products/auvizdnn/ 【12】http://www.eweek.com/servers/int ... a-accelerators.html