vivadohlsdsp_FPGA硬件加速学习vivado hls-----------------卷积加速
对嵌套循环的加速。
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-----------------卷积加速相关推荐
- FPGA硬件加速学习 vivado hls --------------- 002
参考如下链接: https://github.com/xupsh/pp4fpgas-cn 简介 需要充分理解 内存层级和带宽.空间局部性与时间局部性.并行结构和计算与存储之间的取舍和平衡. 可参考UC ...
- Vivado HLS加速卷积层运算
源代码链接:https://github.com/happyday22/HLS_accelerator 1.Introduction 卷积神经网络(CNN)主要由卷积层.池化层.全连接层和激活层等网络 ...
- 深度学习模型压缩与加速综述!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Pikachu5808,编辑:极市平台 来源丨https://zh ...
- 深度学习模型压缩与加速综述
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文详细介绍了4种主流的压缩与加速技术:结构优化.剪枝.量化 ...
- 一文看懂深度学习模型压缩和加速
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 1 前言 近年来深度学习模型在计算机视 ...
- 深度学习中的软件加速算法
深度学习算法对于人工智能的推动作用不言而喻,但其对计算力的要求也显而易见.如何使其运行更高效是摆在不少工程师面前的难题,通常他们会在代码中直接采用一个比较成熟的矩阵运算数学库,开源项目OpenBLAS ...
- 神经网络深度学习计算的高效加速
武汉芯逻辑科技 神经网络加速器IP 1.1 EEP-TPU 张量处理器架构介绍 神经网络编程模型的本质是计算图模型,如下图所示,计算图的输入/输出是张量 数据,计算图的类型代表操作类型.因此,直观的, ...
- 深度学习模型压缩与加速
深度神经网络在人工智能的应用中,包括语音识别.计算机视觉.自然语言处理等各方面,在取得巨大成功的同时,这些深度神经网络需要巨大的计算开销和内存开销,严重阻碍了资源受限下的使用.模型压缩是对已经训练好的 ...
- 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架
11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源"PocketFlow"项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种模型压缩与加速算法并 ...
- 端上智能——深度学习模型压缩与加速
摘要:随着深度学习网络规模的增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用.如何使用深度学习来对模型进行压缩和加速,并且保持几乎一样的精度?本文将为大家详细介绍两种模型压缩算法,并展示 ...
最新文章
- windows 注册表讲解
- list index out of bounds_python3基础03列表(list)和元组(tuple)
- QT QComboBox使用总结
- Spark实现协同过滤CF算法实践
- VR 、AR 谁让你眼前一亮
- c语言成绩管理系统(链表)
- C语言作业怎么答辩,c语言贪吃蛇如何答辩
- 【前端】html页面的字体代码表及字体效果对比
- U盘被写保护,无法格式化
- 基于DFA算法的敏感词过滤的go语言实现
- PHP复合函数,复合函数中的剥洋葱理论
- Python数据分析之探索性分析(多因子复合分析)
- 10大好用的语音识别软件
- 服务网关Zuul初探
- JavaWeb阶段考核总结
- 【JAVA】逢三退一的第二种思路(面向对象)
- oracle中表结果对比,ORACLE 两个表或两个结果集的数据对比常用的函数
- 高级软件工程师现场指导,培养你工程化交付能力!
- openEuler快速入门-openEuler操作系统介绍
- spark LBFGS 设置参数
热门文章
- 【数字信号处理】基于matlab GUI数字信号处理系统【含Matlab源码 1088期】
- 【语音编码】基于matlab LPC编解码【含Matlab源码 554期】
- 【优化算法】粒子群的混沌混合蝴蝶优化算法【含Matlab源码 047期】
- python财经数据接口工具有哪些_Python财经数据接口包TuShare的使用
- android view 画文字,【Android自定义View】绘图之文字篇(三)
- 男生学计算机怎么样,男生学计算机专业好不好?
- python:读取mat文件
- 怎样找回xp调整分区后盘符不见的文件
- cocostudio学习(UIScrollView控件内部子控件的可视化问题)
- 聊天机器人5步重塑酒店业