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
    +关注

    关注

    1664

    文章

    22504

    浏览量

    639318
  • 神经网络
    +关注

    关注

    42

    文章

    4842

    浏览量

    108188

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA实现CNN卷积层的高效窗口生成模块设计与验证

    卷积神经网络(CNN)可以分为卷积层、池化层、激活层、全链接层结构,本篇要实现的,就是CNN的卷积层中的window窗。
    的头像 发表于 04-15 10:35 162次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>CNN<b class='flag-5'>卷积</b>层的高效窗口生成模块设计与验证

    网络接口到 DMA,一套面向工程师的 FPGA 网络开发框架

    Development Kit,是由 Liberouter 研究团队开发的一套框架,用于在 FPGA 加速快速实现高性能网络应用。它并
    的头像 发表于 02-12 11:28 528次阅读
    从<b class='flag-5'>网络</b>接口到 DMA,一套面向工程师的 <b class='flag-5'>FPGA</b> <b class='flag-5'>网络</b>开发框架

    何用FPGA控制ADV7513实现HDMI画面显示和音频播放

    HDMI接口显示使用DMT时序+TMDS编码来实现。当用FPGA控制HDMI的数据传输时,通常可以采用纯RTL实现TMDS算法或者使用专门的HDMI芯片(如ADV7513)这两种方案来完成。本文主要是介绍如
    的头像 发表于 12-02 11:05 7054次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>FPGA</b>控制ADV7513<b class='flag-5'>实现</b>HDMI画面显示和音频播放

    自动驾驶中常提的卷积神经网络是个啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是一种专门用来处理网格状数据(比如图像)的深度学习模型。CNN在图像处理中尤其常见,因为图像本身就可以看作是由像
    的头像 发表于 11-19 18:15 2254次阅读
    自动驾驶中常提的<b class='flag-5'>卷积</b>神经<b class='flag-5'>网络</b>是个啥?

    一些神经网络加速器的设计优化方案

    特征图保留不变,完成和所有相关卷积核点积以后再加载,最多复用 R*R*M 次。 3.不同网络模型的效果 如图所示,后者相对于前者,减少了连线资源和复杂度。 4.DNN加速器空间架构片
    发表于 10-31 07:14

    CNN卷积神经网络设计原理及在MCU200T仿真测试

    CNN算法简介 我们硬件加速器的模型为Lenet-5的变型,网络粗略分共有7层,细分共有13层。包括卷积,最大池化层,激活层,扁平层,全连接层。下面是各层作用介绍: 卷积层:提取
    发表于 10-29 07:49

    NMSIS神经网络库使用介绍

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

    卷积运算分析

    的数据,故设计了ConvUnit模块实现单个感受域规模的卷积运算. 卷积运算:不同于数学当中提及到的卷积概念,CNN神经网络中的
    发表于 10-28 07:31

    如何利用Verilog HDL在FPGA实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA
    的头像 发表于 10-22 17:21 4573次阅读
    如何利用Verilog HDL在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>实现</b>SRAM的读写测试

    如何通过地址生成器实现神经网络特征图的padding?

    对于SiamFC网络结构,我们设计的卷积核宽度为3*3,卷积步长为1,则经卷积过后,特征图宽度会减少2,为了满足我们所设计的pe阵列的计算要求,则需要对输出特征图外围进行补零处理,以扩
    发表于 10-22 08:15

    CICC2033神经网络部署相关操作

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

    何用FPGA实现4K视频的输入输出与处理

    在游戏、影视和显示领域,4K 已经成为标配。而今天,我们就来聊聊——如何用 FPGA 实现 4K 视频的输入输出与处理。
    的头像 发表于 10-15 10:47 2410次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>4K视频的输入输出与处理

    全球应用加速服务如何实现网络服务推荐排行榜

    和提高访问速度,同时提供安全防护和负载均衡功能。本文将深入解析全球应用加速服务的实现方式,并为您呈现2025年网络服务提供商排行榜。一、全球应用加速服务的
    的头像 发表于 09-10 09:48 2034次阅读
    全球应用<b class='flag-5'>加速</b>服务如何<b class='flag-5'>实现</b>?<b class='flag-5'>网络</b>服务推荐排行榜

    何用SDWAN实现国际网络加速网络服务推荐排行榜

    前言全球化业务加速与多云架构普及的背景下,跨境SD-WAN已成为企业构建弹性网络的核心基础设施,选对服务商成了成功关键。在全球化业务加速与多云架构普及的背景下,跨境SD-WAN已成为企业构建弹性
    的头像 发表于 09-09 11:04 1355次阅读
    如<b class='flag-5'>何用</b>SDWAN<b class='flag-5'>实现</b>国际<b class='flag-5'>网络</b><b class='flag-5'>加速</b>?<b class='flag-5'>网络</b>服务推荐排行榜

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA
    的头像 发表于 07-10 11:09 2597次阅读
    基于<b class='flag-5'>FPGA</b>的压缩算法<b class='flag-5'>加速</b><b class='flag-5'>实现</b>