Xilinx Zynq系列FPGA实现神经网络中相关资源评估

6c913e836b079ae5fe06dc6ec774f180.png

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相关文档

正文

0

Zynq7000系列概览

7312166ad4170d032e67ac3b7470b50b.png

1

内存占用

1.1 FPGA程序中内存的实现方式

参阅xilinx文档UG998

2925634afd2476edbd68c6dd1adee14f.png

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内存大小

b3762fd1ea0ce64a0979e395971347f3.png

zynq 7z020的BRAM为4.9Mb,7z035的BRAM为17.6Mb(2.2MB)

407b98061c96339707f54d47e1fdff38.png

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占用硬件资源为:

6625e3343e812037c10c1d3fbc892c51.png

2d944e582f7f1d458ecc53554a33415e.png

cd98e510adbe6f70c0d1fe46a6fd6705.png

在vivado中搭建好系统,占用的资源为:

87f68eb5ee5d695f3b59861c51a0d028.png

8ad8ab99239f11b3c2d4db4be1527664.png

2

PipeCNN可实现性

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.

7ae3076a4e1b26d85dabf50662c31618.png

Xilinx's KCU1500 (XCKU115 FPGA)(已经有xilin的板子实现过pipeCNN,但是型号比zynq高很多)

6dfc0825089a6cb43bfd97154cf550dd.png

硬件资源可以被三个宏调控,device/hw_param.cl. Change the following macros

  • VEC_SIZE

  • LANE_NUM

  • CONV_GP_SIZE_X

消耗资源为:

074a7c09aaf7f42a16bda0c76699f8f6.png

889a1ff01968ae4c45c47cd5c9c4a977.png

3

实现大型神经网络的方法

方案一:压缩模型到<2.2MB,可实现在BRAM中

优点:1.速度快 2.实现方便

缺点:1.模型压缩难度 2.难以实现大型网络

方案二:用FPGA调用DDR

优点:1.速度中等 2.可实现大型网络

缺点:调用DDR有难度,开发周期长

方案三:用片上单片机调用DDR(插入SD卡)分包传入IPcore运算

优点:可实现大型网络

缺点:速度较慢

4

Virtex-7高端FPGA概览

Virtex-7为高端FPGA,比Zynq高了一个档次。

c30e0d1e9c76be293010fbe4e491af38.png

9bf2650d148524962de6394f8772765d.png

7系列FPGA相关文档:

133e69784431c875b5dbe04f669d2896.png

- THE END -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值