【FPGA17】EvaluatingFastAlgorithmsforConvolutionalNeuralNetworksonFPGAs_一只神秘的大金毛_新浪博客...

本文探讨了在FPGA上评估快速算法应用于卷积神经网络的硬件架构设计,包括线性缓冲区设计、Winograd处理引擎、PE并行化策略以及资源消耗分析,以解决内存带宽瓶颈问题。
摘要由CSDN通过智能技术生成
【FPGA17】EvaluatingFastAlgorithmsforConvolutionalNeuralNetworksonFPGAs

算法如图,比较直观。

 

一、硬件架构设计

需要解决如下问题:

memorybandwidth。存储读取数据功耗和速度称为瓶颈,速度与conv硬件处理部分不匹配。所以文中很老套的方法,通过line buffer来复用每个tile交叠的部分(垂直和水平都有交叠的部分)。

 

1、整体架构

所有数据(input feature map, filter)都存在外部存储上。

有多通道(M)的input feature map,line buffer 的每一行存储所有channel的同一行。

Winograd PE 从 line buffer 取出数据。通过FIFO,进入FPGA。

使用double buffer 来 交叠数据。

在前向过程中,filter的数据不能全部存在on-chip memory中,所以把其按照channnel分成几组,每次处理一组。

【FPGA17】EvaluatingFastAlgorithmsforConvolutionalNeuralNetworksonFPGAs

2Line Buffer Design

在on-chip memory上存储部分(n+m行)的line,用来data reuse。

每一行的输入line buffer,有 MxW 个元素。输出的line buffer每一行有 NxC 个元素,N是输出的channel数,C是output feature map的宽度。

由于不同的层,其feature map的大小也是不同的,所以这里硬件上取W为所有中最大的的width(ResNet处理ImageNet的话,最大就是第一层输入图像224x224,而MxW最大为112x64)。

为了reuse data,on-chip memory每次存 n+m 行input,也就是2个overlap的kernel的长度。 然后循环位移lines,相当于一个circular buffer。

 

当电路初始化时,处理电路Winograd engine直接从line

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值