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

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

3天内不再提示

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

电子工程师 来源:祥瑞Coding 作者:祥瑞Coding 2021-03-30 10:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Xilinx zynq系列FPGA实现神经网络评估

本篇目录

1. 内存占用

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

1.2Zynq的BRAM内存大小

1.3一个卷积操作占用的内存

2. PipeCNN可实现性

PipeCNN论文解析:用OpenCL实现FPGA上的大型卷积网络加速

2.1已实现的PipeCNN资源消耗

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

4. Virtex-7高端FPGA概览、7系列FPGA相关文档

正文

0Zynq7000系列概览

0003cb24-8c66-11eb-8b86-12bb97331649.png

1内存占用

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

参阅xilinx文档UG998

0072ceac-8c66-11eb-8b86-12bb97331649.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内存大小

00c36cea-8c66-11eb-8b86-12bb97331649.png

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

01190222-8c66-11eb-8b86-12bb97331649.png

1.3一个卷积操作占用的内存

例如,我们实现的卷积函数,输入27×600,卷积核16×27,输出16×600,数据类型为float。

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

0160a9ce-8c66-11eb-8b86-12bb97331649.png

01b2c808-8c66-11eb-8b86-12bb97331649.png

01ed1d28-8c66-11eb-8b86-12bb97331649.png

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

02359c38-8c66-11eb-8b86-12bb97331649.png

02960b4a-8c66-11eb-8b86-12bb97331649.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.

02e38640-8c66-11eb-8b86-12bb97331649.png

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

02f51388-8c66-11eb-8b86-12bb97331649.png

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

VEC_SIZE

LANE_NUM

CONV_GP_SIZE_X

消耗资源为:

034797a2-8c66-11eb-8b86-12bb97331649.png

03873a74-8c66-11eb-8b86-12bb97331649.png

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

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

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

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

方案二:用FPGA调用DDR

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

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

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

优点:可实现大型网络

缺点:速度较慢

4Virtex-7高端FPGA概览

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

0443f25e-8c66-11eb-8b86-12bb97331649.png

048220e2-8c66-11eb-8b86-12bb97331649.png

7系列FPGA相关文档:

04cc1b3e-8c66-11eb-8b86-12bb97331649.png

责任编辑:lq

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

    关注

    1655

    文章

    22286

    浏览量

    630295
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106797
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129930

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

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    在完成神经网络量化后,需要将神经网络部署到硬件加速器上。首先需要将所有权重数据以及输入数据导入到存储器内。 在仿真环境下,可将其存于一个文件,并在 Verilog 代码通过 readmemh 函数
    发表于 10-20 08:00

    神经网络专家系统在电机故障诊断的应用

    的诊断误差。仿真结果验证了该算法的有效性。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:神经网络专家系统在电机故障诊断的应用.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版
    发表于 06-16 22:09

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe文件,(coe
    的头像 发表于 06-03 15:51 897次阅读
    基于<b class='flag-5'>FPGA</b>搭建<b class='flag-5'>神经网络</b>的步骤解析

    神经网络压缩框架 (NNCF) 的过滤器修剪统计数据怎么查看?

    无法观察神经网络压缩框架 (NNCF) 的过滤器修剪统计数据
    发表于 03-06 07:10

    BP神经网络与卷积神经网络的比较

    多层。 每一层都由若干个神经元构成,神经元之间通过权重连接。信号在神经网络是前向传播的,而误差是反向传播的。 卷积神经网络(CNN) :
    的头像 发表于 02-12 15:53 1307次阅读

    BP神经网络实现步骤详解

    BP神经网络实现步骤主要包括以下几个阶段:网络初始化、前向传播、误差计算、反向传播和权重更新。以下是对这些步骤的详细解释: 一、网络初始化 确定
    的头像 发表于 02-12 15:50 1119次阅读

    BP神经网络的优缺点分析

    自学习能力 : BP神经网络能够通过训练数据自动调整网络参数,实现对输入数据的分类、回归等任务,无需人工进行复杂的特征工程。 泛化能力强 : BP神经网络通过训练数据学习到的特征表示
    的头像 发表于 02-12 15:36 1586次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算法是BP
    的头像 发表于 02-12 15:18 1274次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural N
    的头像 发表于 02-12 15:15 1340次阅读

    BP神经网络的基本原理

    输入层、隐藏层和输出层组成。其中,输入层负责接收外部输入数据,这些数据随后被传递到隐藏层。隐藏层是BP神经网络的核心部分,它可以通过一层或多层神经元对输入数据进行加权求和,并通过非线性激活函数(如ReLU、sigmoid或tanh)进行处理,从而提取出数据
    的头像 发表于 02-12 15:13 1518次阅读

    BP神经网络在图像识别的应用

    BP神经网络在图像识别中发挥着重要作用,其多层结构使得网络能够学习到复杂的特征表达,适用于处理非线性问题。以下是对BP神经网络在图像识别应用的分析: 一、BP
    的头像 发表于 02-12 15:12 1188次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个神经元组成,
    的头像 发表于 01-23 13:52 842次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工
    的头像 发表于 01-09 10:24 2247次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法