[置顶] 基于FPGA的卷积网络加速设计
2018-01-19 11:05
253 查看
答辩完了,放上来毕设的最后一部分内容,CNN的硬件加速。大多数论文采用的FPGA加速大多基于HLS或是OpenCL,用高级语言编写的。我没有接触过,不知道转化为底层HDL效率如何。本科学了verilog,因此还是用的verilog HDL硬件语言设计的。
传送门如下:https://github.com/hunterlew/convolution_network_on_FPGA
有两个文件夹,分别是v7-415t和v7-485t FPGA仿真实现。为了简化设计,仅仅仿真了7层的网络,并用16位有符号定点数保证精度。由于资源不同,实现上有细微差别,以保证资源够用。因为文件大小限制,只能上传verilog文件而无法上传工程。
为了权衡系统资源及计算速度,制定了以下并行策略,如图所示。首先,第一层卷积单独采用移位寄存器结构加速(可以参考相关论文,使用大量乘法器,以计算资源换取速度,实现每个周期输出一个卷积结果),其它层卷积采用纯流水线的结构(即每个通道为一个乘法器+一个加法器)。由于带宽限制,第二层卷积采用通道分组策略,排队输出,最后完成通道合并。针对两款FPGA设定不同的组数。这种策略能实现组间的资源复用,减少资源消耗。
FPGA加速还有很多优化的空间。比如流水线以及资源复用这块,可以发挥FPGA的优势;量化这块,可以采用较小位数,牺牲部分精度而换取资源和速度;裁剪这块,结合全局均值池化、1*1卷积、剪枝等参数裁剪方法,减少参数移植;卷积结构这块,可以考虑像caffe那种使用toplitz矩阵形式的卷积计算,同样是资源换取速度的方法等等。
传送门如下:https://github.com/hunterlew/convolution_network_on_FPGA
有两个文件夹,分别是v7-415t和v7-485t FPGA仿真实现。为了简化设计,仅仅仿真了7层的网络,并用16位有符号定点数保证精度。由于资源不同,实现上有细微差别,以保证资源够用。因为文件大小限制,只能上传verilog文件而无法上传工程。
为了权衡系统资源及计算速度,制定了以下并行策略,如图所示。首先,第一层卷积单独采用移位寄存器结构加速(可以参考相关论文,使用大量乘法器,以计算资源换取速度,实现每个周期输出一个卷积结果),其它层卷积采用纯流水线的结构(即每个通道为一个乘法器+一个加法器)。由于带宽限制,第二层卷积采用通道分组策略,排队输出,最后完成通道合并。针对两款FPGA设定不同的组数。这种策略能实现组间的资源复用,减少资源消耗。
FPGA加速还有很多优化的空间。比如流水线以及资源复用这块,可以发挥FPGA的优势;量化这块,可以采用较小位数,牺牲部分精度而换取资源和速度;裁剪这块,结合全局均值池化、1*1卷积、剪枝等参数裁剪方法,减少参数移植;卷积结构这块,可以考虑像caffe那种使用toplitz矩阵形式的卷积计算,同样是资源换取速度的方法等等。
相关文章推荐
- 基于AXI4总线卷积FPGA加速IP核的尝试
- [置顶] 优雅设计封装基于Okhttp3的网络框架(完):原生HttpUrlConnction请求、多线程分发 及 数据转换
- 我的IM - 基础篇[3] - 基于UDP通讯的IM设计[基于XML格式的网络通讯协议 以及 包解析器和包处理器的基础概念]
- 网络爬虫项目开发日志(七): 基于MD5去重树的爬虫设计与优化
- 基于模型设计的FPGA开发与实现:滤波器设计与实现(四)Matlab中滤波器HDL代码生成优化
- 基于ARM-LPC2368的网络接口的设计与实现
- 基于FPGA的加密算法设计
- 基于反相代理的Web缓存加速——可缓存的CMS系统设计
- 基于Volley和Gson的http网络请求设计(客户端和服务端)
- 基于FPGA与MATLAB的IIR滤波器设计与实现
- 基于FPGA的任意分频器设计
- 基于ACE设计一个c++网络游戏服务器框架引擎
- 优化基于FPGA的深度卷积神经网络的加速器设计
- 基于反相代理的Web缓存加速——可缓存的CMS系统设计
- 基于FPGA的UART接口协议设计
- 设计题目:基于CPLD/FPGA的出租车计费器
- 优雅设计封装基于Okhttp3的网络框架(一):Http网络协议与Okhttp3解析
- [转]基于反向代理的Web缓存加速 ——可缓存的CMS系统设计
- 【iCore3 双核心板_FPGA】实验二十八:基于SDRAM 的VGA 驱动器的设计
- 基于ARM在cpu上做神经网络加速【转】