对嵌套循环的加速。

void ConvProcess(float temp[CHN_IN],float sum[CHN_OUT])

{

//#pragma HLS ARRAY_PARTITION variable=filter_buf complete dim=2

int i,j;

convprocess1:

for(j=0;j

void ConvProcess(float temp[CHN_IN],float sum[CHN_OUT])

{

#pragma HLS ARRAY_PARTITION variable=filter_buf complete dim=2

int i,j;

convprocess1:

for(j=0;j

使用这种优化方法的效果,综合时间较长。

换一个清晰一点的卷积思路

void ConvProcess(float temp[CHN_IN],float sum[CHN_OUT])

{

//#pragma HLS ARRAY_PARTITION variable=filter_buf complete dim=2

int i,j;

float tmp_sum;

convprocess1:

for(i=0;i

浮点乘法需要3个dsp 浮点加法需要两个dsp

浮点乘法需要5个周期 浮点加速需要10个周期

对内层的convprocess2进行pipeline指令优化。

对外层的convprocess使用pipeline指令。

最外层pipeline 内层unroll。

此时,对端口进行切割操作。

#pragma HLS ARRAY_RESHAPE variable=temp complete dim=1

#pragma HLS ARRAY_RESHAPE variable=filter_buf complete dim=2

看来在没有了数据读写端口的限制下,可以达到initiation interval为1的间隔。

如果按照给最大资源的思路进行优化的话

void ConvProcess(float temp[CHN_IN],float sum[CHN_OUT])

{

#pragma HLS ARRAY_RESHAPE variable=filter_buf complete dim=2

#pragma HLS ARRAY_RESHAPE variable=sum complete dim=1

#pragma HLS PIPELINE

#pragma HLS ARRAY_RESHAPE variable=temp complete dim=1

#pragma HLS ARRAY_RESHAPE variable=filter_buf complete dim=2

//#pragma HLS ARRAY_PARTITION variable=filter_buf complete dim=2

int i,j;

for(j=0;j

为了更好的分析,把chn in改为3 cnh out改为6

分析报告如下

这里的一个疑问就是为什么乘法的环节这么少。

如果不对端口和数组做优化呢

分析图如下:

如果对权重数组做优化呢?

发现没有变换。看来如果不对输入输出同样做优化的话,就没啥用。

vivadohlsdsp_FPGA硬件加速学习vivado hls-----------------卷积加速相关推荐

  1. FPGA硬件加速学习 vivado hls --------------- 002

    参考如下链接: https://github.com/xupsh/pp4fpgas-cn 简介 需要充分理解 内存层级和带宽.空间局部性与时间局部性.并行结构和计算与存储之间的取舍和平衡. 可参考UC ...

  2. Vivado HLS加速卷积层运算

    源代码链接:https://github.com/happyday22/HLS_accelerator 1.Introduction 卷积神经网络(CNN)主要由卷积层.池化层.全连接层和激活层等网络 ...

  3. 深度学习模型压缩与加速综述!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Pikachu5808,编辑:极市平台 来源丨https://zh ...

  4. 深度学习模型压缩与加速综述

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文详细介绍了4种主流的压缩与加速技术:结构优化.剪枝.量化 ...

  5. 一文看懂深度学习模型压缩和加速

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 1 前言 近年来深度学习模型在计算机视 ...

  6. 深度学习中的软件加速算法

    深度学习算法对于人工智能的推动作用不言而喻,但其对计算力的要求也显而易见.如何使其运行更高效是摆在不少工程师面前的难题,通常他们会在代码中直接采用一个比较成熟的矩阵运算数学库,开源项目OpenBLAS ...

  7. 神经网络深度学习计算的高效加速

    武汉芯逻辑科技 神经网络加速器IP 1.1 EEP-TPU 张量处理器架构介绍 神经网络编程模型的本质是计算图模型,如下图所示,计算图的输入/输出是张量 数据,计算图的类型代表操作类型.因此,直观的, ...

  8. 深度学习模型压缩与加速

    深度神经网络在人工智能的应用中,包括语音识别.计算机视觉.自然语言处理等各方面,在取得巨大成功的同时,这些深度神经网络需要巨大的计算开销和内存开销,严重阻碍了资源受限下的使用.模型压缩是对已经训练好的 ...

  9. 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架

    11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源"PocketFlow"项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种模型压缩与加速算法并 ...

  10. 端上智能——深度学习模型压缩与加速

    摘要:随着深度学习网络规模的增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用.如何使用深度学习来对模型进行压缩和加速,并且保持几乎一样的精度?本文将为大家详细介绍两种模型压缩算法,并展示 ...

最新文章

  1. windows 注册表讲解
  2. list index out of bounds_python3基础03列表(list)和元组(tuple)
  3. QT QComboBox使用总结
  4. Spark实现协同过滤CF算法实践
  5. VR 、AR 谁让你眼前一亮
  6. c语言成绩管理系统(链表)
  7. C语言作业怎么答辩,c语言贪吃蛇如何答辩
  8. 【前端】html页面的字体代码表及字体效果对比
  9. U盘被写保护,无法格式化
  10. 基于DFA算法的敏感词过滤的go语言实现
  11. PHP复合函数,复合函数中的剥洋葱理论
  12. Python数据分析之探索性分析(多因子复合分析)
  13. 10大好用的语音识别软件
  14. 服务网关Zuul初探
  15. JavaWeb阶段考核总结
  16. 【JAVA】逢三退一的第二种思路(面向对象)
  17. oracle中表结果对比,ORACLE 两个表或两个结果集的数据对比常用的函数
  18. 高级软件工程师现场指导,培养你工程化交付能力!
  19. openEuler快速入门-openEuler操作系统介绍
  20. spark LBFGS 设置参数

热门文章

  1. 【数字信号处理】基于matlab GUI数字信号处理系统【含Matlab源码 1088期】
  2. 【语音编码】基于matlab LPC编解码【含Matlab源码 554期】
  3. 【优化算法】粒子群的混沌混合蝴蝶优化算法【含Matlab源码 047期】
  4. python财经数据接口工具有哪些_Python财经数据接口包TuShare的使用
  5. android view 画文字,【Android自定义View】绘图之文字篇(三)
  6. 男生学计算机怎么样,男生学计算机专业好不好?
  7. python:读取mat文件
  8. 怎样找回xp调整分区后盘符不见的文件
  9. cocostudio学习(UIScrollView控件内部子控件的可视化问题)
  10. 聊天机器人5步重塑酒店业