0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-04-07 11:31 次阅读

0Zynq7000系列概览

94155fe2-b5e8-11ec-aa7f-dac502259ad0.png

1内存占用

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

参阅xilinx文档UG998

942dedb4-b5e8-11ec-aa7f-dac502259ad0.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.2Zynq的BRAM内存大小

94409540-b5e8-11ec-aa7f-dac502259ad0.png

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

9451e96c-b5e8-11ec-aa7f-dac502259ad0.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占用硬件资源为:

94768290-b5e8-11ec-aa7f-dac502259ad0.png

948c8400-b5e8-11ec-aa7f-dac502259ad0.png

9499078e-b5e8-11ec-aa7f-dac502259ad0.png

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

94a95382-b5e8-11ec-aa7f-dac502259ad0.png

94b7ea3c-b5e8-11ec-aa7f-dac502259ad0.png

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 SDKv16.1 toolset.

对于Xilinx FPGAs, theSDAcceldevelopment environment v2017.2 can be used.

94c7cd1c-b5e8-11ec-aa7f-dac502259ad0.png

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

94e36eaa-b5e8-11ec-aa7f-dac502259ad0.png

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

  • VEC_SIZE

  • LANE_NUM

  • CONV_GP_SIZE_X

消耗资源为:

94f89c80-b5e8-11ec-aa7f-dac502259ad0.png

95070432-b5e8-11ec-aa7f-dac502259ad0.png

3实现大型神经网络的方法

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

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

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

方案二:用FPGA调用DDR

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

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

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

优点:可实现大型网络

缺点:速度较慢

4Virtex-7高端FPGA概览

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

951bc20a-b5e8-11ec-aa7f-dac502259ad0.png

952c0bc4-b5e8-11ec-aa7f-dac502259ad0.png

7系列FPGA相关文档:

95392c3c-b5e8-11ec-aa7f-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1630

    文章

    21759

    浏览量

    604306
  • 寄存器
    +关注

    关注

    31

    文章

    5357

    浏览量

    120668
  • 神经网络
    +关注

    关注

    42

    文章

    4774

    浏览量

    100898

原文标题:Xilinx Zynq系列FPGA实现神经网络中相关资源评估

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA程序内存的实现方式

        Xilinx zynq系列FPGA实现神经网络评估
    发表于 07-10 09:24 2019次阅读

    脉冲耦合神经网络FPGA上的实现谁会?

    脉冲耦合神经网络(PCNN)在FPGA上的实现实现数据分类功能,有报酬。QQ470345140.
    发表于 08-25 09:57

    【PYNQ-Z2申请】基于PYNQ的神经网络自动驾驶小车

    ,分享项目的开展,实施过程,结果,展示项目结果,并全程开源项目源码。本人一直非常希望学习与实践Xilinx Zynq系列FPGA芯片与基于FPGA
    发表于 12-19 11:36

    【PYNQ-Z2试用体验】基于PYNQ的神经网络自动驾驶小车 - 项目规划

    小车运动的控制信号,实现小车自动驾驶。在初步实现方案,为了快速实现整体功能,使用软件神经网络作为控制器,使用单片机作为底盘电机的控制器。在
    发表于 03-02 23:10

    基于赛灵思FPGA的卷积神经网络实现设计

    FPGA实现卷积神经网络 (CNN)。CNN 是一类深度神经网络,在处理大规模图像识别任务以及与机器学习类似的其他问题方面已大获成功。在当前案例
    发表于 06-19 07:24

    如何设计BP神经网络图像压缩算法?

    (Digital Signal Processor)相比,现场可编程门阵列(Field Programma-ble Gate Array,FPGA)在神经网络实现上更具优势。DSP处理器在处理时采用指令顺序执行
    发表于 08-08 06:11

    如何移植一个CNN神经网络FPGA

    )第二步:使用Lattice sensAI 软件编译已训练好的神经网络,定点化网络参数。该软件会根据神经网络结构和预设的FPGA资源进行分析
    发表于 11-26 07:46

    基于FPGA神经网络的性能评估及局限性

    FPGA实现神经网络关键问题分析基于FPGA的ANN实现方法基于FPGA
    发表于 04-30 06:58

    EdgeBoard神经网络算子在FPGA实现方法是什么?

    FPGA加速的关键因素是什么?EdgeBoard神经网络算子在FPGA实现方法是什么?
    发表于 09-28 06:37

    FPGA实现大型神经网络的设计

    1、加速神经网络的必备开源项目  到底纯FPGA适不适合这种大型神经网络的设计?这个问题其实我们不适合回答,但是FPGA厂商是的实际操作是很有权威性的,现在不论是Intel还是
    发表于 10-24 16:10

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

    集成在FPGA fabric模块的RAM,每个xilinxFPGA中集成有多个这样的BRAM。可以被当作有以下特性的cache:1.不支持像处理器cache
    的头像 发表于 03-30 10:29 1885次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>Zynq</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>神经网络</b><b class='flag-5'>中</b><b class='flag-5'>相关</b><b class='flag-5'>资源</b><b class='flag-5'>评估</b>

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

    Xilinx zynq系列FPGA实现神经网络评估
    的头像 发表于 04-19 11:12 2599次阅读
    如何用OpenCL<b class='flag-5'>实现</b><b class='flag-5'>FPGA</b>上的大型卷积<b class='flag-5'>网络</b>加速?

    基于FPGA的RBF神经网络硬件实现

    基于FPGA的RBF神经网络硬件实现说明。
    发表于 04-28 11:24 26次下载

    基于FPGA神经网络硬件实现方法

    基于FPGA神经网络硬件实现方法说明。
    发表于 06-01 09:35 37次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>神经网络</b>硬件<b class='flag-5'>实现</b>方法

    如何在FPGA实现神经网络

    可编程门阵列(FPGA)作为一种灵活、高效的硬件实现方式,为神经网络的加速提供了新的思路。本文将从FPGA实现
    的头像 发表于 07-10 17:01 2112次阅读