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视图的应用有助于设计优化和性能调试,提升系统的整体效率与性能。



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

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

相关文章

力扣第206题-反转链表

反转链表的效果示意图 要改变链表结构时,通常加入一个创建的临时头结点会更容易操作 时间复杂度:遍历2遍,2n 空间复杂度:额外创建一个栈,n (空间创建一个数组长度最大为5000,你说这个数组是栈也可以&…

【C++】详解多态

目录 初识多态 多态的条件 接口继承和实现继承 override 和 final 多态原理 继承与虚函数表 析构函数与多态 抽象类 本篇内容关联知识的链接 【C】详解C的继承-CSDN博客 【C】详解C的模板-CSDN博客 【C】C的内存管理-CSDN博客 初识多态 父类被不同子类继承后&#…

代码随想录算法训练营Day47 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

代码随想录算法训练营Day47 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III LeetCode 198.打家劫舍 题目链接&#xff1a;LeetCode 198.打家劫舍 思路&#xff1a; 当前打劫或者不打劫 class Solution { public:int rob(vector<int>& nums) {vector<int>…

基于时频模糊算子的数据增强方法

关键词&#xff1a;时频模糊&#xff0c;数据增强&#xff0c;机器学习&#xff0c;音频预处理 我们引入时频模糊算子&#xff0c;该算子将信号的短时傅里叶变换与指定的核进行卷积&#xff0c;在SpeechCommands V2数据集上训练了一个使用ResNet-34架构的卷积神经网络(CNN)和一…

vscode C++调试设置

cmakelist需要改成set(CMAKE_BUILD_TYPE "Debug") 如果有set(CMAKE_CXX_FLAGS "-O0 -g3 -stdliblibstdc -no-pie -pthread -Wall -D_GLIBCXX_USE_NANOSLEEP -DLINUX")//"-O0优化项目改成0&#xff0c;否者-O2/3部分编译优化后打不了断点 然后创建la…

freertos的信号量和互斥锁学习笔记

freertos的信号量和互斥锁有两个比较形象的例子可以解释两者的主要用途。 第一个是信号量&#xff1a; 使用信号量的最初目的是为了给共享 资源建立一个标志&#xff0c;该标志表示该共享资源被占用情况。这样&#xff0c;当一个任务在访问共享资源之前&#xff0c;可以先对这…

【MySQL精通之路】InnoDB(6)-磁盘结构(4)-双写缓冲区

主博客&#xff1a; 【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】磁盘上的InnoDB结构-表空间-CSDN博客 下一篇&#xff1a; 【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-Redolog-CSDN博客 目录 1.介绍 1.1 配置变量…

报名开启!2024 开源之夏丨Serverless Devs 课题已上线!

Serverless 是近年来云计算领域热门话题&#xff0c;凭借极致弹性、按量付费、降本提效等众多优势受到很多人的追捧&#xff0c;各云厂商也在不断地布局 Serverless 领域。 Serverless Devs 是一个由阿里巴巴发起的 Serverless 领域的开源项目&#xff0c;其目的是要和开发者们…

leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍

文章目录 前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点总结 前言 leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍 一、移除链表元…

最近最少使用缓存

题目&#xff1a;请设计实现一个最近最少使用缓存&#xff0c;要求如下两个操作的时间复杂度都是O(1)。 get(key)&#xff1a;如果缓存中存在键key&#xff0c;则返回它对应的值&#xff1b;否则返回-1.put(key,value)&#xff1a;如果缓存中之前包含键key&#xff0c;则它的值…

扫盲:如何提升医学图像分割性能-to do list

导读&#xff1a;本文主要讨论了如何改进图像分割项目中的分割性能&#xff0c;包括一般性和具体性的问题解决方案&#xff0c;以及如何通过调整模型参数、改善数据集质量、优化模型架构、调整超参数、增加训练时长、改善图像分辨率和后处理技术等方法来提高分割效果。 图像分…

【MySQL精通之路】MySQL的使用(9)-设置环境变量

可以在命令提示符下设置环境变量&#xff0c;以影响命令处理器的当前调用&#xff0c;也可以永久设置环境变量以影响未来的调用。 要永久设置变量&#xff0c;可以在启动文件中进行设置&#xff0c;也可以使用系统为此提供的接口进行设置。 有关具体细节&#xff0c;请参阅命…

拼多多暂时超越阿里成为电商第一

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 拼多多的财报又炸裂了&#xff1a; 拼多多发布了第一季度财报&#xff0c;营收868亿&#xff0c;增长了131%&#xff0c;净利润279亿&#xff0c;增长了246%&#xff0c;营销服务收入424亿&#xff0c;也就是商家的…

小林coding笔记

MySQL执行流程 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层。Server 层负责建立连接、分析和执行 SQL。存储引擎层负责数据的存储和提取。 Mysql执行 启动Mysql net start mysql登陆 mysql -u root -p输入密码

SwiftUI中的动画.animation和withAnimation

动画是通过改变视图的状态来给视图添加平滑视图变化的能力。SwiftUI中有两种类型的动画:隐式动画和显式动画。 不管是哪种动画&#xff0c;我们都需要一个被State包装的状态属性值&#xff0c;通过这个值的改变来促使与之相关的UI刷新&#xff0c;继而执行动画。 隐式动画.ani…

mariadb10.5.8版本主从搭建

主从服务安装我们先略过了&#xff0c;网上的安装教程一大把&#xff0c;直接开始讲配置 主服务配置 [mysqld] ...server-id1 #开启二进制日志 log-binmysql-bin #中继日志的前缀名称 relay-logmysql-relay-bin #控制binlog的写入频率。每执行多少次事务写入一次 sync_binlog…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-19讲 串口实验UART

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

水平垂直居中的六种方法

1. 使用 Flexbox Flexbox 是一个现代的布局模型&#xff0c;可以轻松实现元素的水平和垂直居中。 .container {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */height: 100vh; /* 视窗高度 */ }2. 使用 Grid CSS Grid 是另一种强…

【Golang】 Go语言中如何将参数添加到URL中

文章目录 前言一、参数解释二、代码实现三、总结 前言 在开发Web应用程序时&#xff0c;我们经常需要将参数添加到URL中&#xff0c;以便将数据发送到服务器。这些参数通常用于GET请求&#xff0c;以向服务器传递查询条件或其他信息。在Go语言中&#xff0c;我们可以使用net/u…

Vivado IP核的快速入门 官方手册和例程

在IP Catalog中选择要使用的IP核&#xff0c;可以查看支持的器件与资料。 在设计源sources页面中选中配置完成的IP核点击右键选择 Open IP Example Design&#xff0c;等待工程加载完成即可&#xff0c;可以点击Run Simulation进行功能仿真进行IP核的学习。 参考&#xff1…