当前位置: 首页 > news >正文

Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图

目录

1. 简介

2. 功能特性

2.1 Dataflow Viewer 的功能

2.2 Dataflow 和 Pipeline 的区别

3. 具体演示

4. 总结


1. 简介

Dataflow视图,即数据流查看器。

DATAFLOW优化属于一种动态优化过程,其完整性依赖于与RTL协同仿真的完成。因此,“Dataflow”(数据流)查看器的设计目的是为了让用户能够观察到工具推断出的数据流结构,审视FIFO/PIPO等通道,并评估通道深度如何影响性能。基于协同仿真的结果,“Dataflow”查看器将对性能数据进行反向标注以提供详细的性能分析。

即便未执行RTL协同仿真,也可以访问“Dataflow”查看器,但此时视图将缺少关键的性能数据,如读/写的阻塞时间、协同仿真的深度以及停滞时间等信息。

要在“Dataflow”查看器中补充这些信息,必须添加 DATAFLOW 编译指令。数据流可以应用于顶层函数,或者针对特定的函数或循环区域实施。通过“Dataflow”查看器展示的数据流图形结构,可以清晰展现不同进程以及它们之间的生产者/消费者连接。

测试激励文件必须运行顶层函数,至少 2 次迭代。

2. 功能特性

2.1 Dataflow Viewer 的功能

Dataflow Viewer 的功能特性包括:

  • 源代码浏览器。
  • 从进程/通道到源代码的自动交叉探测。
  • 筛选端口和通道类型。
  • 进程 (Process) 和通道 (Channel) 表详列了设计的特性:
    • 通道剖析(FIFO 大小等),从“Solution Settings”(解决方案设置)对话框启用。
    • RTL 协同仿真后报告进程读取阻塞/写入阻塞/停滞时间。
    • 显示进程时延和 II。
    • 通道类型和宽度均显示在“Channel”表中。
    • 从“Process”和“Channel”表到“Graph”和“Source”浏览器之间的自动交叉探测。
    • 悬停于通道或进程上即可显示工具提示(含设计信息)。

Dataflow Viewer 可帮助设计进行性能调试。RTL 协同仿真期间,如果设计发生死锁,那么 GUI 将打开 Dataflow Viewer 并高亮死锁所设计的通道和进程,以便您判定原因,如 FIFO 深度不足等。

如果设计表现不及预期,那么 Process 和 Channel 表还能用于了解原因。进程可能发生停滞并等待读取输入,或者可能无法写入输出而导致停滞。Channel 表可以提供停滞百分比并识别进程是处于“读取阻塞”还是“写入阻塞”状态。

2.2 Dataflow 和 Pipeline 的区别

DataflowPipeline的区别:静态优化和动态优化

流水线优化(Pipelining)是一种静态优化技术。它将一个操作分解成几个阶段,每个阶段在一个时钟周期内完成。这样,不同的操作可以在不同的阶段并行执行。每个阶段都会在一个固定的时间间隔后执行,这种间隔不会改变,所以我们称之为“静态”。这种优化可以大大提高操作的吞吐量,但在设计过程中,程序员需要提前考虑和设计好各个阶段以确保每个阶段可以平稳地运行。

数据流优化是一种动态优化技术。在数据流模型中,计算模块或函数在输入数据可用时就开始执行,输出数据在计算完成时就可以立即用于后续的计算。这意味着不同的模块可以在不同的时间开始和结束,从而实现了高级别的并行性。因此,数据流优化的调度是动态的,也就是说,它会根据数据的可用性和依赖性来决定执行的顺序和时间。

流水线优化更注重操作的阶段划分和顺序安排,而数据流优化更注重数据的可用性和模块的并行执行。

鉴于数据流优化是一种动态优化技术,在运行C/RTL联合仿真之前,无法看到优化的效果。在生成性能数据之前,进程或通道的详细信息将被标记为N/A。如下图所示:

3. 具体演示

4. 总结

Dataflow视图是一种强大的性能分析工具,通过展示数据流结构和通道信息,帮助用户深入了解设计的性能特征。其功能包括源代码浏览、进程和通道详细表、自动交叉探测等,为设计调试提供了有力支持。与流水线优化相比,数据流优化更注重动态性和并行性,能够根据输入数据的可用性灵活调度执行顺序,提升系统性能。然而,需要注意的是,在未执行RTL协同仿真前,数据流视图可能缺乏关键性能数据,需添加DATAFLOW编译指令以补充信息。 Dataflow视图的应用有助于设计优化和性能调试,提升系统的整体效率与性能。



相关文章:

Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图

目录 1. 简介 2. 功能特性 2.1 Dataflow Viewer 的功能 2.2 Dataflow 和 Pipeline 的区别 3. 具体演示 4. 总结 1. 简介 Dataflow视图,即数据流查看器。 DATAFLOW优化属于一种动态优化过程,其完整性依赖于与RTL协同仿真的完成。因此,…...

蓝桥杯物联网竞赛_STM32L071KBU6_关于sizo of函数产生的BUG

首先现象是我在用LORA发送信息的时候,左边显示长度是8而右边接收到的数据长度却是4 我以为是OLED显示屏坏了,又或者是我想搞创新用了const char* 类型强制转换数据的原因,结果发现都不是 void Function_SendMsg( unsigned char* data){unsi…...

Wpf 使用 Prism 实战开发Day22

客户端添加IDialogService 弹窗服务 在首页点击添加备忘录或待办事项按钮的时候,希望有一个弹窗,进行相对应的内容添加操作。 一.在Views文件夹中,再创建一个Dialog 文件夹,用于放置备忘录和待办事项的弹窗界面。 1.1 备忘录&…...

遍历列表

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能。在生活中,如果想要去商场买一件衣服&#…...

创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格

环境准备 介绍:create-vue是Vue官方提供的最新的脚手架工具,用于快速生成一个工程化的Vue项目create-vue提供如下功能: 统一的目录结构 本地调试 热部署 单元测试 集成打包依赖环境:NodeJS 安装NodeJS 一、 创建vue工程 npm 类…...

为了更全面地分析开发人员容易被骗的原因和提供更加深入的防范措施

为了更全面地分析开发人员容易被骗的原因和提供更加深入的防范措施,我们可以进一步探讨以下几个方面: 深入技术细节 不安全的代码注释和文档: 原因:开发人员在代码注释中可能会无意间透露敏感信息,如API密钥、密码或系…...

虹科Pico汽车示波器 | 免拆诊断案例 | 2020款奔驰G350车行驶中急加速时发动机抖动

故障现象  一辆2020款奔驰G350车,搭载264 920 发动机,累计行驶里程约为2.8万km。车主反映,行驶中急加速超车时发动机抖动,同时发动机故障灯闪烁,发动机加速无力。 故障诊断 接车后反复试车发现,故障只在…...

大模型落地竞逐,云计算大厂“百舸争流”

作者 | 辰纹 来源 | 洞见新研社 从ChatGPT到Sora,从图文到视频,从通用大模型到垂直大模型……经过了1年多时间的探索,大模型进入到以落地为先的第二阶段。 行业的躁动与资本的狂热相交汇,既造就了信仰派的脚踏实地,也…...

物体检测算法-R-CNN,SSD,YOLO

物体检测算法-R-CNN,SSD,YOLO 1 R-CNN2 SSD3 Yolo总结 1 R-CNN R-CNN(Region-based Convolutional Neural Network)是一种基于区域的卷积神经网络,是第一个成功将深度学习应用到目标检测上的算法。它主要由三个步骤组…...

区块链开发:区块链软件开发包装相关解析

区块链开发是指设计、构建和维护基于区块链技术的应用程序或系统的过程。区块链是一种分布式账本技术,它通过去中心化的方式记录和验证数据,确保数据的透明性、不可篡改性和安全性。区块链开发者使用各种编程语言和框架来创建这些应用程序。 在加密货币领…...

一个月速刷leetcodeHOT100 day07 轮转数组 除自身以外的乘积 找到字符串中所有字母异位词

轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: […...

Plotly数据可视化宝典

一、引言 在数据驱动的时代,数据可视化已成为不可或缺的一部分。通过图形化的方式展示数据,我们能更直观地理解数据的内在规律和趋势。Plotly,作为一款强大的数据可视化工具,以其丰富的图表类型、交互性和灵活性,赢得了广大数据科学家的青睐。本宝典将深入解析Plotly的各…...

由于找不到mfc140u.dll,无法继续执行代码如何解决

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是电脑找不到mfc140u.dll文件。这个问题可能会导致程序无法正常运行或系统崩溃。为了解决这个问题,本文将介绍5种修复方法,帮助大家快速恢复电脑的正常运行。 一&#x…...

卷积神经网络(CNN)详细介绍及其原理详解

卷积神经网络(Convolutional Neural Networks,简称CNN)是深度学习中非常重要的一类神经网络,主要用于图像识别、图像分类、物体检测等计算机视觉任务。本文将详细介绍卷积神经网络的基本概念、结构组成及其工作原理,并…...

kotlin基础之空指针检查、字符串表达式、函数默认值

Kotlin 的空指针检查 Kotlin 是一种空安全的语言,这意味着它强制开发者明确地处理可能的空值。在 Kotlin 中,所有的变量默认都是非空的,除非显式地标记为可为空。 声明可为空的变量 你可以通过在类型后面添加 ? 来声明一个变量可以为空&a…...

【力扣一轮】字符串异位 数组并集

先验知识记录: 遇到哈希问题,想到三种数据结构: ①数组:适用于哈希值比较小,范围较小, ②set:适用于哈希值较大。 ③map:如果需要用到键值对,则用之。 242.有效的字母…...

完美解决flex布局换行后最后一行不能和保持和满行的间距一致,或者左对齐的尴尬情景

display: grid; 是 CSS3 引入的一个非常强大的布局系统,允许你以二维网格的形式布局内容。这种布局模型在设计和构建复杂的网页布局时非常有用,因为它提供了对行和列的完全控制。 以下是关于 display: grid; 的一些基本概念和特性的讲解: 1…...

面试准备-项目【面试准备】

面试准备-项目【面试准备】 前言面试准备自我介绍:项目介绍: 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别…...

迭代器 增强for循环

迭代器原理 简单来说,迭代器就是一种可以访问集合的方式,就像一个游标或者指针,可以逐一查看集合(映射、列表)中的元素。 想象一下你有一张清单,上面列着你需要做的事情,但是你只能一次看一项。迭代器就像…...

Ubuntu系统版本查看办法

Ubuntu系统版本查看办法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看内核版本6. 使用 neofetch 命令(如果已安装)总结 在 Ubuntu 操作系统中,查看当前系统版本的详细信息可…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...