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

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

3天内不再提示

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

FPGA之家 来源:CSDN 作者:祥瑞Coding 2021-04-19 11:12 次阅读

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系列概览

3fd119b4-9ff3-11eb-8b86-12bb97331649.png

1内存占用

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

参阅xilinx文档UG998

3fe9ac4a-9ff3-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.2 Zynq的BRAM内存大小

401c62b6-9ff3-11eb-8b86-12bb97331649.png

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

4056ec9c-9ff3-11eb-8b86-12bb97331649.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占用硬件资源为:

40a24fb6-9ff3-11eb-8b86-12bb97331649.png

40c04278-9ff3-11eb-8b86-12bb97331649.png

40ca8fa8-9ff3-11eb-8b86-12bb97331649.png

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

40de955c-9ff3-11eb-8b86-12bb97331649.png

4119ebde-9ff3-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 SDK v16.1 toolset.

对于Xilinx FPGAs, the SDAccel development environment v2017.2 can be used.

413a8bc8-9ff3-11eb-8b86-12bb97331649.png

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

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

VEC_SIZE

LANE_NUM

CONV_GP_SIZE_X

消耗资源为:

417dad0e-9ff3-11eb-8b86-12bb97331649.png

419045e0-9ff3-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高了一个档次。

41b0185c-9ff3-11eb-8b86-12bb97331649.png

7系列FPGA相关文档:

41d92422-9ff3-11eb-8b86-12bb97331649.png

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

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

责任编辑:haq

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

    关注

    1625

    文章

    21664

    浏览量

    601676
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100519

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

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

收藏 人收藏

    评论

    相关推荐

    卷积神经网络的基本原理与算法

    ),是深度学习的代表算法之一。 一、基本原理 卷积运算 卷积运算是卷积神经网络的核心,用于提取图像中的局部特征。 定义卷积核:
    的头像 发表于 11-15 14:47 229次阅读

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习模型的案例: 一、基于
    的头像 发表于 10-25 09:22 140次阅读

    卷积神经网络何用卷积神经网络通常运用在哪里

    和应用场景。 图像识别 图像识别是卷积神经网络最广泛的应用之一。CNN能够自动学习图像中的特征,实现对图像的分类、识别和分析。以下是一些具体的应用场景: 1.1 物体识别:CNN可以识别图像中的物体,如猫、狗、汽车等。这在自动驾
    的头像 发表于 07-11 14:43 1853次阅读

    FPGA实现LeNet-5卷积神经网络

    LeNet-5 是一个经典的卷积神经网络(CNN),由 Yann LeCun 在 1990 年代设计,主要用于手写数字识别任务(如 MNIST 数据集)。随着现场可编程门阵列(FPGA)技术的发展
    的头像 发表于 07-11 10:27 2009次阅读

    如何在FPGA实现神经网络

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

    卷积神经网络实现示例

    分类。 1. 卷积神经网络的基本概念 1.1 卷积层(Convolutional Layer) 卷积层是CNN中的核心组件,用于提取图像特征。卷积
    的头像 发表于 07-03 10:51 368次阅读

    卷积神经网络实现原理

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文将详细介绍卷积神经网络
    的头像 发表于 07-03 10:49 489次阅读

    cnn卷积神经网络分类有哪些

    卷积神经网络概述 卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,由多层卷积层和池
    的头像 发表于 07-03 09:28 467次阅读

    卷积神经网络训练的是什么

    、训练过程以及应用场景。 1. 卷积神经网络的基本概念 1.1 卷积神经网络的定义 卷积神经网络
    的头像 发表于 07-03 09:15 346次阅读

    卷积神经网络的原理与实现

    1.卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。 卷积神经网络是一种前馈
    的头像 发表于 07-02 16:47 496次阅读

    卷积神经网络的基本原理和应用范围

    和应用范围。 一、卷积神经网络的基本原理 1. 卷积层(Convolutional Layer) 卷积层是CNN的核心组成部分,其主要功能是提取图像中的局部特征。
    的头像 发表于 07-02 15:30 891次阅读

    卷积神经网络的基本结构及其功能

    。 引言 深度学习是机器学习的一个分支,它通过模拟人脑神经网络的结构和功能,实现对数据的自动学习和特征提取。卷积神经网络是深度学习中的一种重要模型,它通过
    的头像 发表于 07-02 14:45 1133次阅读

    基于FPGA网络加速设计实现

    首先是FPGA硬件的变化太多,各个模块可配参数的变化(比如卷积模块并行数的变化),另外一个是网络模型多种多样以及开源的网络模型平台也很多(tensorflow,pytorch等)。
    发表于 04-08 09:48 827次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>网络</b><b class='flag-5'>加速</b>设计<b class='flag-5'>实现</b>

    【国产FPGA+OMAPL138开发板体验】(原创)5.FPGA的AI加速源代码

    if; end process; end architecture Behavioral; 本人写的这个程序极度简化了在FPGA实现AI加速器的过程,例如并行处理、流水线
    发表于 02-12 16:18

    何用FPGA加速神经网络

    到底纯FPGA适不适合这种大型神经网络的设计?这个问题其实我们不适合回答,但是FPGA厂商是的实际操作是很有权威性的,现在不论是Intel还是Xilinx都没有在自己传统的
    的头像 发表于 01-24 09:51 894次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>FPGA</b><b class='flag-5'>加速</b>神经<b class='flag-5'>网络</b>