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

news2024/11/19 14:47:41

目录

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.coloradmin.cn/o/1683383.html

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

相关文章

微软开发者大会,Copilot Agents发布,掀起新一轮生产力革命!

把AI融入生产力工具的未来会是什么样?微软今天给出了蓝图。 今天凌晨,微软召开了Microsoft Build 2024 开发者大会,同前两天的Google I/O开发者大会一样,本次大会的核心词还是“AI”,其中最主要的内容是最新的Copilot…

如何提交网站到谷歌网站收录?

其实就那么几个步骤,要做谷歌那肯定是需要一个谷歌账号的,然后找到Google Search Console这个谷歌的官方平台,这是最权威的可以统计来自谷歌流量的平台了,毕竟是谷歌自家的,肯定也不可能作假,然后就是跟着平…

Kubernetes——Pod详解

目录 一、Pod基础概念 1.概念 2.使用方式 3.Pause容器 3.1网络 3.2存储 4.Pod容器分类 4.1自主式Pod 4.2控制器管理的Pod 二、Pod的分类 1.基础容器(infrastructure container) 2.初始化容器(initcontainers) 2.1Ini…

如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

富甲美国---沃尔玛创始人山姆·沃尔顿

富甲美国---沃尔玛创始人山姆沃尔顿_山姆沃尔顿是犹太人吗?-CSDN博客文章浏览阅读786次。​1.不断地检讨回顾我们做得好不好或需要改进的,我们从没有对现况满足过。我们会短暂地大肆庆祝成功,然后认真地检讨下次如何能做得更好---不断改进与创新。2我们…

AJAX、

文章目录 AJAX1. AJAX简介AJAX特点 2. XML简介3. AJAX发送get请求4. post请求设置体参数5. 设置请求头信息6. AJAX请求服务端响应json数据7. ie缓存问题8. 请求超时问题和网络异常9. 取消请求10. 请求重复取消11. jQuery中的AJAX请求12. axios函数发送AJAX使用fetch函数发送AJA…

数据链路层简单介绍

mac地址(物理地址) mac地址和ip地址,目的都是为了区分网络上的不同设备的,在最开始的时候,mac地址和ip地址是两伙人,独立各自提出的,ip地址是4个字节(早都不够用了)&…

stm32常用编写C语言基础知识,条件编译,结构体等

位操作 宏定义#define 带参数的宏定义 条件编译 下面是头文件中常见的编译语句,其中_LED_H可以认为是一个编译段的名字。 下面代码表示满足某个条件,进行包含头文件的编译,SYSTEM_SUPPORT_OS可能是条件,当非0时,可以…

计算机操作系统总结(1)

1操作系统的概念(定义)功能和目标 (1)什么是操作系统? (2)操作系统的功能和目标—作为系统资源的管理者 (3)操作系统的功能和目标—向上层提供方便易用的服务 (4)操作系…

实现本地访问云主机,以及在云主机搭建FTP站点

前言 云计算是一种基于互联网的计算模式,通过网络提供按需访问的计算资源和服务。核心概念是把计算能力视作一种公共资源,用户可以根据自身需求动态分配和管理这些资源。 云主机 ECS (Elastic Compute Server)是一种按需获取的云端服务器,提…

计算机网络数据链路层知识点总结

3.1 数据链路层功能概述 (1)知识总览 (2)数据链路层的研究思想 (3)数据链路层基本概念 (4)数据链路层基本功能 3.1 封装成帧和透明传输 (1)数据链路层功能…

css - sass or scss ?

总的来说,Sass 和 SCSS 提供的功能是一样的,选择哪种语法主要取决于你的个人或团队的偏好。

五步定位性能瓶颈

一、着手测试前的准备:优化数据流向与系统架构分析 在进行性能测试或系统优化之前,明确数据流向和系统架构的细节是至关重要的步骤。这不仅能够帮助识别潜在的瓶颈,还能确保测试用例设计的全面性与针对性。以下是关键步骤和方法:…

5.23小结

1.java项目创新 目前想添加一个自动回复的功能和设置验证方式有(允许任何人添加,禁止添加,设置回答问题添加,普通验证添加) 目前只完成画好前端界面,前端发送请求,还有表的修改 因为涉及表字…

JavaScript基础(九)

冒泡排序 用例子比较好理解: var arry[7,2,6,3,4,1,8]; //拿出第一位数7和后面依次比较,遇到大的8就换位,8再与后面依次比较,没有能和8换位的数,再从下一位2依次与下面的数比较。 console.log(排列之前:arry); for (…

html5 笔记01

01 表单类型和属性 input的type属性 单行文本框: typetext 电子邮箱 : typeemail 地址路径 : type url 定义用于输入数字的字段: typenumber 手机号码: typetel 搜索框 : typesearch 定义颜色选择器 : typecolor 滑块控件 : typerange 定义日期 :typedate 定义输入时间的控件…

为什么我用save保存更新,数据库不更新,反而新增一条

今天发现一个奇怪的问题: 为什么我用save保存更新的数据后,数据库不更新,但是增加了一条空数据,我的前台也把数据用json传上去了,也成功了,但是数据库没有更新相应行的数据,而是新增了一条数据&…

FPGA学习笔记之Nios II(一)简单介绍及新建工程及下载

系列文章目录 文章目录 系列文章目录前言QsysNios IIhello world 实例Platform DesignNios II程序设计 前言 利用Quartus中的Qsys工具,可以实现在FPGA里面跑嵌入式的功能 Qsys Altera 公司将主控制器、数字信号处理模块、存储器及其控制模块、各种接口协议等模块&…

机器学习圣经PRML作者Bishop推出重磅教材

图1 书籍《Pattern Recognition and Machine Learning》 只要学人工智能的人,必然学机器学习。 只要学机器学习的人,必然看PRML。 PRML为何物? PRML全名《Pattern Recognition and Machine Learning》,一部机器学习领域的内功…

【vue-3】动态属性绑定v-bind

1、文本动态绑定&#xff1a; <input type"text" v-bind:value"web.url"> 简写&#xff1a; <input type"text" :value"web.url"> 2、文字样式动态绑定 <b :class"{textColor:web.fontStatus}">vue学…