如何用OpenCL实现FPGA上的大型卷积网络加速?

xilinx zynq系列fpga实现神经网络评估
本篇目录
1. 内存占用
1.1 fpga程序中内存的实现方式
1.2 zynq的bram内存大小
1.3 一个卷积操作占用的内存
2. pipecnn可实现性
pipecnn论文解析:用opencl实现fpga上的大型卷积网络加速
2.1 已实现的pipecnn资源消耗
3. 实现大型神经网络的方法
4. virtex-7高端fpga概览、7系列fpga相关文档
正文
0zynq7000系列概览
1内存占用
1.1 fpga程序中内存的实现方式
参阅xilinx文档ug998
fpga并没有像软件那样用已有的cache,fpga的hls编译器会在fpga中创建一个快速的memory architecture以最好的适应算法中的数据样式(data layout)。因此fpga可以有相互独立的不同大小的内部存储空间,例如寄存器,移位寄存器,fifos和brams。
寄存器:最快的内存结构,集成在在运算单元之中,获取不需要额外的时延。
移位寄存器:可以被当作一个数据序列,每一个数据可以在不同的运算之中被重复使用。将其中所有数据移动到相邻的存储设备中只需要一个时钟周期。
fifo:只有一个输入和输出的数据序列,通常被用于循环或循环函数,细节会被hls编译器处理。
bram:集成在fpga fabric模块中的ram,每个xilinx的fpga中集成有多个这样的bram。可以被当作有以下特性的cache:1.不支持像处理器cache中那样的缓存一致性(cache coherency,collision),不支持处理器中的一些逻辑类型。2.只在设备有电时保持内存。3.不同的bram块可以同时传输数据。
1.2 zynq的bram内存大小
zynq 7z020的bram为4.9mb,7z035的bram为17.6mb(2.2mb)
1.3 一个卷积操作占用的内存
例如,我们实现的卷积函数,输入27×600,卷积核16×27,输出16×600,数据类型为float。
//convolution operation for (i = 0; i 《 16; i++) { for (j = 0; j 《 600; j++) { result = 0; for (k = 0; k 《 27; k++) { temp = weights[i*27+k] * buf_in[k*600+j]; result += temp; } buf_out[i*600+j] = result; } }
在hls中生成的ipcore占用硬件资源为:
在vivado中搭建好系统,占用的资源为:
2pipecnn可实现性
pipecnn是一个基于opencl的fpga实现大型卷积网络的加速器。
pipecnn解析文档:
pipecnn论文解析:用opencl实现fpga上的大型卷积网络加速
github地址:https://github.com/doonny/pipecnn#how-to-use
2.1 已实现的pipecnn资源消耗
对于altera fpga,运用 intel‘s opencl sdk v16.1 toolset.
对于xilinx fpgas, the sdaccel development environment v2017.2 can be used.
xilinx’s kcu1500 (xcku115 fpga)(已经有xilin的板子实现过pipecnn,但是型号比zynq高很多)
硬件资源可以被三个宏调控,device/hw_param.cl. change the following macros
vec_size
lane_num
conv_gp_size_x
消耗资源为:
3实现大型神经网络的方法
方案一:压缩模型到《2.2mb,可实现在bram中
优点:1.速度快 2.实现方便
缺点:1.模型压缩难度 2.难以实现大型网络
方案二:用fpga调用ddr
优点:1.速度中等 2.可实现大型网络
缺点:调用ddr有难度,开发周期长
方案三:用片上单片机调用ddr(插入sd卡)分包传入ipcore运算
优点:可实现大型网络
缺点:速度较慢
4virtex-7高端fpga概览
virtex-7为高端fpga,比zynq高了一个档次。
7系列fpga相关文档:
原文标题:xilinx zynq系列fpga实现神经网络中相关资源评估
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。


Intel将发布全新的Agilex FPGA芯片
华米科技 Amazfit GTS 2 颜值最高的智能手表
路由器设置大揭秘
MAX5949A/MAX5949B热插拔控制器
不同操作系统间QoR性能存在差异
如何用OpenCL实现FPGA上的大型卷积网络加速?
毫米波雷达用于监测生命体征信号的技术解析
交易所黑马CoinAll竟抢上火币、币安投资的项目意欲何为
基于CAN总线的RS-232串口设备远程通信
晶振的测试电路,Crystal test circuit
谁摘得2018高工LED金球奖桂冠
5G频谱竞标10日开始 台湾3500Mhz频段成争夺焦点
电瓶维修——网友电动车自我保养与维护方法(回答网友提问)
智能人工气候箱配置的作用是什么
国美FenmmyNote评测 最具性价比手机
推动广州半导体产业实现跨越式发展,对本地半导体产业发展具有里程碑意义
中创业务流程平台软件V9.2获得鲲鹏Validated认证
首款5G手机正式发布_年度旗舰三星S10系列手机值得拥有
云化的竞争,虚拟无线接入网才是趋势
小型边缘计算网关设备如何快速上云