AI 引擎系列 5 - 以 AI 引擎模型为目标运行 AI 引擎编译器(2022.1 更新)

news2024/11/18 18:23:17

AI 引擎系列 5 - 以 AI 引擎模型为目标运行 AI 引擎编译器(2022.1 更新)

简介

 
在先前的 AI 引擎系列博文中,我们以 x86 模型为目标运行了 AI 引擎编译器,并运行了 X86 仿真器来验证 AI 引擎应用的功能模型。
在本文中,我们将以 AI 引擎模型为目标来运行 AI 引擎编译器并观察生成的部分文件。


要求

 
下文要求您通读前几篇 AI 引擎系列博文。

AI 引擎系列 1 - 从 AI 引擎工具开始(2022.1 更新)
AI 引擎系列 2 - AI 引擎 graph 简介 (2022.1 更新)
AI 引擎系列 3 - AI 引擎内核简介
AI 引擎系列 4 - 首次运行 AI 引擎编译器和 x86simulator(2022.1 更新)
 

以 AI 引擎模型为目标运行 AI 引擎编译器


在上一篇博文中所创建的工程内,打开 simple_application.prj 文件,将生效的构建配置更改为“Emulation-AIE”,这样即可为 AI 引擎模型编译应用。
 



选中“Explorer”(资源管理器)窗口中的 aie 应用 (simple_application),然后单击锤子图标构建该应用。
 



这样即可在控制台中看到该命令的运行过程。此过程与上一篇博文中用于 x86simulator 的过程非常相似。

aiecompiler -v --stacksize=1024 --heapsize=1024 -Xchess=main:darts.xargs=-nb -include="<Xilinx Installation Path>/Vitis/2022.1/aietools/include" -include="<Xilinx Installation Path>/Vitis_HLS/2022.1/include" -include="../" -include="../src" -include="../data" -include="../src/kernels" -target=hw   -platform=xilinx_vck190_base_202210_1/xilinx_vck190_base_202210_1.xpfm -workdir=./Work ../src/project.cpp 


主要区别在于目标选项 (-target) 设为 hw(硬件)。(先前构建目标为“Emulation-SW”,目标选项设为 x86)。
 

从 AI 引擎编译器生成的输出

构建完成后,即可在“Explorer”窗口中看到,已创建名为“Emulation-AIE”的新目录。

其中包含来自构建的所有输出。稍后我们再仔细查看此输出。
 



默认情况下,AI 引擎编译器会将所有输出写入 Work/ 的目录和 libadf.a 的文件。

libadf.a 文件是实际的输出文件,将在剩余 Vitis™ 流程中用于把 AI 引擎应用集成到系统其余部分。

Work/ 目录包含多个子目录和文件:

  • aie/该目录包含每个 AI 引擎各自编译的输出结果
  • arch/:该目录包含的文件用于描述 AI 引擎阵列上的应用的物理映射
  • config/:该目录包含的文件用于指定 SystemC 仿真器的选项
  • noc/:该目录包含 NoC 相关的文件
  • ps/c_rts/:该目录包含基于 C 语言的运行时协议,用于对 PS 交互进行建模
  • ps/cdo/:该目录包含生成的代码,此代码用于以配置数据对象格式 (CDO) 进行计算图 (graph) 配置和初始化。可在 SystemC-RTL 仿真和实际硬件执行期间使用。
  • reports/:该目录包含各种报告文件
  • project.aiecompiler_summary此文件可在 Vitis 分析器中打开,以便查看编译汇总信息和报告。我们将在后续博文中详细分析此文件。


运行 AI 引擎仿真器

现在,我们可以运行 AI 引擎仿真器了。

选中“AI Engine Application”(simple_application),然后单击“Run As”图标旁的箭头,单击“Run As > Launch AIE Emulator”(运行方式 > 启动 AI 引擎仿真器)
 



仿真输出会写入 Emulation-AIE/aiesimulator_output/data/output.txt 文件。

我们来仔细分析下该文件:
 



每一行值之前都有时间。这是因为,相比于 x86 仿真,AI 引擎仿真属于周期近似仿真,因此输出文件包含数据的时间戳。

可以看到,第一批输出样本于 934 ns 后到达。在 VCK190 基本平台中,AI 引擎的频率设置为 1250 GHz。这意味着需要 1167 个计算周期才能输出第一批输出样本。

在后续博文中,我们将讲解出现此时延的各种原因,但请谨记(正如 AI 引擎 3 博文中所述),此代码并未最优化为在矢量处理器上运行,因此并未充分发挥其算力。

通过观察 output.txt 中的第 64 行可以看到 TLAST 一词。这表示计算图执行完 1 次迭代需耗时 1033.6 ns
 



经过 1324.8 ns 仿真后,输出第 2 次迭代的首个样本。

现在我们可以验证,输出的数据与黄金结果仍然匹配。

选中 golden.txt 文件和新创建的 output.txt 文件,然后右键单击其中之一。随后选中“Compare With > Each Other after transformation”(比较对象 > 变换后相互比较)。
 




在弹出窗口中,单击列表图标(预定义的筛选器)。在第二个输出窗口中,启用“Remove timestamp”(移除时间戳),然后单击“OK”(确定)。在第一个弹出窗口上单击“OK”

这样将会从仿真器的输出文件中移除时间戳,仅对输出样本值进行比较。
 



2 个文件之间应不存在任何差异,这表示 AI 引擎编译结果与黄金参考之间功能上仍然匹配。
 

下一步

在下一篇博文中,我们将讲解 AI 引擎编译后生成的 Vitis 分析器报告文件。

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

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

相关文章

吴恩达《机器学习》8-1->8-2:非线性假设、神经元和大脑

一、非线性假设 在之前学到的线性回归和逻辑回归中&#xff0c;存在一个缺点&#xff0c;即当特征数量很多时&#xff0c;计算的负荷会变得非常大。考虑一个例子&#xff0c;假设我们使用 &#x1d465;₁, &#x1d465;₂ 的多项式进行预测&#xff0c;这时我们可以很好地应…

汽车制动系统技术分析概要

目录 1.基本功能概述 2. 基本工作原理分析 2.1 Two-Box系统架构(Bosch_IBooster) 2.2 One-Box系统架构(Bosch_IPB) 2.3 ​​​​​​​ABS技术 2.4 TCS技术 2.5 VDC技术 2.6 EPB技术 2.7 小结 3. 该场景应用发展趋势分析 1.基本功能概述 传统汽车的底盘主要由传动系、…

容器网络-Underlay和Overlay

一、主机网络 前面讲了容器内部网络&#xff0c;但是容器最终是要部署在主机上&#xff0c;跨主机间的网络访问又是怎么样的&#xff0c;跨主机网络主要有两种方案。 二、 Underlay 使用现有底层网络&#xff0c;为每一个容器配置可路由的网络IP。也就是说容器网络和主机网络…

视频剪辑助手:轻松实现视频随机分割并提取音频保存

随着社交媒体和视频平台的日益普及&#xff0c;视频制作和分享已成为人们日常生活的一部分。无论是分享个人生活&#xff0c;还是展示才艺&#xff0c;或是推广产品&#xff0c;视频都是一个非常有效的工具。但是&#xff0c;视频制作往往涉及到大量的视频剪辑工作&#xff0c;…

FM3793A-高性能PWM控制芯片 超低成本18W-20W 恒功率PD快充

产品描述&#xff1a; FM3793A是一款应用于离线反激式转换器中的高性能电流模式PWM控制器。在 FM3793A中&#xff0c;PWM开关频率最大为65KHz。在轻载和空载条件下&#xff0c;该FM3793A启动间歇模式从而降低开关频率。FM3793A具有丰富的芯片异常状况保护功能&#xff0c;如欠压…

数据分析实战 | KNN算法——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型改进 十一、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接&#xff1a;https://dow…

万物皆数——用matlab求解二阶微分方程

一、背景 毕达哥拉斯的“万物皆数”哲学观点表达了一个理念&#xff0c;即宇宙万物都可以通过数学语言来描述&#xff0c;数是万物的本原。 勾股定理就是毕达哥拉斯提出&#xff0c;因此在西方勾股定理也被叫做毕达哥拉斯定理。 工科类的专业&#xff0c;越到后面越感觉到数学…

永达理简析:利用保险的“财务规划”功能维持退休后生活水平

现代社会环境背景下&#xff0c;“自养自老”已经是一种未来养老趋势&#xff0c;很多人会为自己准备一份长期、比较周全的保障&#xff0c;这样财务规划不仅会分担子女的压力&#xff0c;也让自己有一个长远的保障。在各种财务储蓄工具中&#xff0c;商业保险占据着不可取代的…

聊聊性能测试的左移右移

前面的文章中&#xff0c;分享过我对于测试左移右移的一些思考和实践方法。有同学在后台留言问我&#xff1a;常规的性能测试一般都是在测试阶段集成测试时候才开始介入&#xff0c;很容易测试时间不够&#xff0c;可不可以借鉴测试左移右移的思路&#xff0c;更早的介入和发现…

CKA认证模块②-K8S企业运维和落地实战

CKA认证模块②-K8S企业运维和落地实战 Pod高级实战-Pod生命周期-启动钩子,停止钩子 Pod生命周期完整流程介绍 容器钩子; 容器探测; Pod重启策略; Pod的终止过程; Init容器; 初始化容器最佳实践 初始化容器与主容器区别是? init容器没有readinessProbe… [rootk8s-mast…

经典的测试开发面试题

1、你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决&#xff1f; 首先&#xff0c;将问题提交到缺陷管理库进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根绝需求说明书&#xff0c;产品说明、设计文档等&…

迷雾系统-人物驱散迷雾

使用linerRender,将人物移动数据动态添加进去&#xff0c;同样是特殊层级让FogCamera渲染 EndCapVertices的数量越多&#xff0c;矩形就变为一个椭圆形的形状&#xff0c;更适合圆形视野探索 当拐点的两个点距离太近&#xff0c;LineRender会发生扭曲&#xff0c;解决方案是在…

Redis五种数据类型及命令操作(一)

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 知足知不足 有为有不为 为与不为皆为可为&#x1f335; &#x1f349;本篇简介:&#x1f349; 本篇记录Redis五种数据类型及命令操作&#xff0c;如…

Java基础-面向对象进阶-多态, 包, final, 权限修饰符,代码块

Java基础-面向对象进阶-多态, 包, final, 权限修饰符,代码块 多态多态的概述多态中调用成员的特点多态的优势和弊端多态练习 包final权限修饰符代码块来源Gitee地址 多态 多态的概述 多态: 对象的多种形态多态的前提 有继承/实现关系有父类引用指向子类对象有方法的重写 多态…

Netty--NIO(Non-blocking IO)基础--三大组件

NIO&#xff08;Non-blocking IO&#xff09;是一种非阻塞的IO模型&#xff0c;它通过引入Channel和Selector的概念&#xff0c;使得一个线程能够管理多个通道&#xff0c;从而提高了IO操作的效率。本文将介绍NIO的三大组件&#xff1a;Channel、Buffer、以及Selector&#xff…

【C++对象模型】构造函数II

构造函数语意学 》》构造函数语意学I—默认构造函数的构造操作《《 》》构造函数语意学II—拷贝构造函数的构造操作《《 》》构造函数语意学III—程序转化语意学《《 拷贝构造函数的构造操作 有三种情况&#xff0c;会以一个object的内容作为另一个class object的初值。 1.…

跨镜头目标融合__追踪之目标重识别研究(跨镜头目标追踪)

文章目录 标题&#xff1a;跨镜头目标融合&#xff1b;目标重识别&#xff1b;跨镜头目标追踪&#xff1b; 1 目的&#xff1a;2 实现方法/策略&#xff1a;2.1 目标类型位置匹配&#xff08;或考虑结合目标轨迹&#xff09;2.2 目标重识别2.3 目标类型位置匹配(轨迹)目标重识别…

Linux centos系统中添加磁盘

为了学习与训练文件系统或磁盘的分区、格式化和挂载/卸载&#xff0c;我们需要为虚拟机添加磁盘。根据需要&#xff0c;可以添加多块不同大小的磁盘。具体操作讨论如下&#xff0c;供参考。 一、添加 1.开机前 有两个地方&#xff0c;可选择打开添加硬盘对话框 (1)双击左侧…

暖手宝+充电宝设计方案 可实现快速升温和充电 低成本充电电流可选

充电暖手宝因为它的便携性&#xff0c;既能供暖又能当充电宝使用而备受人们喜爱。是冬天暖手供暖的必备神器。 目前&#xff0c;市场常见的暖手宝大致有三个类型&#xff0c;分别是加热水的热水袋、通过化学反应放热的铁粉袋子和锂电供电的智能暖手宝。与常见的暖手宝不同&…

计算机网络期末复习-Part3

1、rdt1.0&#xff0c;rdt2.0&#xff0c;rdt3.0的底层信道模型 RDT 1.0: 完全可靠的底层信道&#xff0c;没有比特差错&#xff0c;也没有分组丢失。 RDT 2.0: 具有比特差错的底层信道&#xff0c;有比特差错&#xff0c;但没有分组丢失。 RDT 3.0: 具有差错和丢包的底层信道…