vivado hls设计优化(十五)

一、循环优化
1.循环可以流水线化,可以展开,可以部分展开,可以扁平化,可以合并。
2.对于循环的索引index变量,避免使用全局变量,这个不利于优化。


二、变量循环边界
1.循环的边界如果是变量,将禁止执行vivado hls可应用的某些最优化操作;
2.如果循环的边界是顶层函数的参数传入过来的,那么认为循环边界是变量
3.如果循环的边界是变量,那么会阻止工具去判断循环的时延,时延将是?问号
解决办法:
使用tripcount行程来约束说明;
或者将c语言代码中使用assert宏定义。
4.由于变量边界循环无法展开,因此不仅阻止应用展开 (unroll) 指令,而且还会阻止将循环上层的层次流水线化
5.当循环或函数实现流水线化后,Vivado HLS 即可将函数或循环下层层级中的所有循环展开。如果在此层
级中存在具有变量边界的循环,它就会阻止流水线化。

三、对含有变量边界的循环的解决办法
对于含变量边界的循环,解决方案是通过循环内部的条件执行来将循环迭代次数设置为固定值。可重写变量循环边界示
例中的代码,如以下代码示例所示。此处循环边界显式设置为变量宽度的最大值,循环主体则以有条件方式来执行
#include "ap_cint.h"
#define N 32
typedef int8 din_t;
typedef int13 dout_t;
typedef uint5 dsel_t;
dout_t loop_max_bounds(din_t A[N], dsel_t width) {
dout_t out_accum=0;
dsel_t x;
LOOP_X:for (x=0;x<N; x++) {
if (x<width) {
out_accum += A[x];
}
}
return out_accum;
}
以上示例中的 for 循环 (LOOP_X) 可展开。由于此循环的上限固定,因此 Vivado HLS 知晓需创建的硬件数量。在 RTL
设计中包含 N(32) 份循环主体副本。每份循环主体副本都包含与之关联的条件逻辑,并根据变量宽度值来执行。

四、循环流水化
1.当循环或函数流水线化时,所在层级比流水线化的循环或函数层级更低的所有循环都必须展开

五、循环流水化示例说明
#include "loop_pipeline.h"
dout_t loop_pipeline(din_t A[N]) {
int i,j;
static dout_t acc;
LOOP_I:for(i=0; i < 20; i++){
LOOP_J: for(j=0; j < 20; j++){
acc += A[i] * j;
}
}
return acc;
}

1.上述代码中,如果对loop_pipeline函数进行流水化设计:
dout_t loop_pipeline(din_t A[N]) {
int i,j;
static dout_t acc;

#pragram pipeline II= 1

LOOP_I:for(i=0; i < 20; i++){
LOOP_J: for(j=0; j < 20; j++){
acc += A[i] * j;
}
}
return acc;
}

如果上面是这样优化,那么LOOP_I和LOOP_J都需要被展开!

2.如果对LOOP_I进行pipeline流水化设计
dout_t loop_pipeline(din_t A[N]) {
int i,j;
static dout_t acc;

LOOP_I:for(i=0; i < 20; i++){
#pragram pipeline II= 1
LOOP_J: for(j=0; j < 20; j++){
acc += A[i] * j;
}
}
return acc;
}
如果代码是这么设计的化,那么LOOP_J循环被全部展开unroll

3.如何对LOOP_J进行pipeline优化
dout_t loop_pipeline(din_t A[N]) {
int i,j;
static dout_t acc;

LOOP_I:for(i=0; i < 20; i++){

LOOP_J: for(j=0; j < 20; j++){
#pragram pipeline II= 1
acc += A[i] * j;
}
}
return acc;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1131607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

救命神器!自考必用9大AI论文平台深度测评

救命神器&#xff01;自考必用9大AI论文平台深度测评 自考论文写作的“救星”来了&#xff1a;AI平台测评全面解析 随着自考人数逐年攀升&#xff0c;论文写作成为众多考生必须面对的难题。从选题构思到文献检索&#xff0c;从逻辑梳理到格式排版&#xff0c;每一个环节都可能成…

用Hugging Face微调医疗BERT模型

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 医疗BERT微调&#xff1a;在数据稀缺与隐私保护下的创新路径 目录 医疗BERT微调&#xff1a;在数据稀缺与隐私保护下的创新路径 引言&#xff1a;医疗NLP的破局点 一、现在时&#xff1a;微调实践的现状与隐性成本 1.1 当…

IM 即时通讯系统消息 有序性与可靠性 的全链路设计与工程实现

在 IM 聊天系统中,消息不丢、不重、不乱序 是最核心、也是最难实现的目标之一。 本文从 架构设计 → 协议机制 → 数据模型 → Java 工程实现 全链路展开,给出一套可直接落地的 企业级 IM 消息有序性与可靠性解决方案。 一、问题背景与设计目标 1. IM 系统面临的核心挑战 在…

深度学习毕设项目推荐-基于python-CNN卷积神经网络的水果识别基于机器学习卷积神经网络的水果识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】通过python_CNN卷积神经网络对鸡蛋是否破损识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

深度学习毕设项目推荐-基于python-CNN卷积神经网络对土豆疾病识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

NFS服务端操作系统常用操作手册:体系化指南

一、NFS基础概述 1.1 什么是NFS&#xff1f; 网络文件系统&#xff08;Network File System&#xff09;是一种分布式文件系统协议&#xff0c;允许客户端计算机通过网络访问服务器上的文件&#xff0c;就像访问本地存储一样。 1.2 核心组件 nfs-utils: NFS服务套件rpcbind: RP…

通信协议仿真:通信协议基础_(6).网络层协议仿真

网络层协议仿真 在网络层协议仿真中&#xff0c;我们将探讨如何通过仿真工具和编程语言来模拟网络层协议的行为。网络层协议负责将数据从源节点传输到目的节点&#xff0c;涉及到路由选择、分组转发、地址管理等关键功能。通过仿真&#xff0c;我们可以更好地理解这些协议的工作…

【强烈收藏】我Python都不会,能直接学AI大模型吗?——小白避坑指南

文章探讨学习AI大模型的前提条件&#xff0c;指出普通人无需从零开始造模型&#xff0c;而是学习使用现有模型。分析常见学习障碍&#xff1a;数学恐惧、代码过敏、耐心缺失和硬件不足&#xff0c;并提供差异化学习路径&#xff1a;大学生应打好数学编程基础&#xff0c;积累实…

深度学习毕设项目推荐-通过python_CNN卷积神经网络对鸡蛋是否破损识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

LeetCode热题100--5. 最长回文子串--中等

题目 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&#xff1a;“bab” 解释&#xff1a;“aba” 同样是符合题意的答案。 示例 2&#xff1a; 输入&#xff1a;s “cbbd” 输出&#xff1a;“bb” 题…

【值得收藏】大模型RAG技术突破:12种创新架构全解析,助你掌握前沿检索增强生成技术

本文介绍了12种最新的RAG高级架构与方法&#xff0c;包括Mindscape-Aware RAG、基于超图记忆的多步RAG、高保真分层RAG等创新技术。这些方法针对长文档理解、多步推理、减少幻觉、多模态处理等场景进行了优化&#xff0c;每个方法均附有论文链接&#xff0c;为开发者提供了丰富…

深度学习毕设项目推荐-通过python_CNN卷积神经网络对辣椒类别识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

ADVANCE Day45

浙大疏锦行 &#x1f4d8; Day 45 实战作业&#xff1a;给模型装上仪表盘 —— TensorBoard 实战 1. 作业综述 核心目标&#xff1a; 环境搭建&#xff1a;安装并启动 TensorBoard。指标监控 (Scalar)&#xff1a;不再盯着控制台刷屏&#xff0c;而是画出漂亮的 Loss 和 Ac…

2026年转行AI大模型必备:两个高薪岗位,让你年后求职弯道超车

文章指出当前就业市场低迷&#xff0c;但春节后很快进入春招旺季&#xff0c;建议现在就开始准备。重点推荐两个普通人也能入行的AI方向&#xff1a;AI大模型应用开发师&#xff08;年薪最高72万&#xff09;和AI大模型训练师&#xff08;年薪最高45万&#xff09;。AI行业正处…

一文搞清微调技术的发展与演进

现在的大语言模型发展得非常快&#xff0c;从几亿参数到千亿参数&#xff0c;不仅模型越来越大&#xff0c;能力也越来越强。但是在实际工作中&#xff0c;我们很少会从零开始训练一个这样的巨无霸模型&#xff0c;因为那样的成本和资源需求实在太高了。更多的时候&#xff0c;…

linux的root目录缓存清理

1. 找出隐藏的大文件 / 文件夹&#xff08;关键步骤&#xff09;先执行以下命令&#xff0c;查看 /root 下所有文件&#xff08;包括隐藏文件&#xff09; 的空间占用&#xff0c;定位具体占用空间的文件&#xff1a;# 查看/root下所有文件&#xff08;含隐藏&#xff09;的空间…

【收藏】LLM大模型全景解析:从零开始理解AI智能的诞生

LLM大模型是基于Transformer架构的海量参数模型&#xff0c;通过规模效应、自注意力机制和训练范式调整实现通用智能。工作流程包括分词、嵌入表示、多层Transformer堆叠和概率预测&#xff0c;实现数据压缩→规律学习→智能涌现。LLM有Decoder-Only、Encoder-Only和Encoder-De…

深度学习计算机毕设之通过python_CNN卷积神经网络对鸡蛋是否破损识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…