Vitis HLS 学习笔记--HLS优化指令示例-目录

news/2024/9/23 18:29:13/

目录

1. 示例集合概述

2. 内容分析

2.1 array_partition

2.2 bind_op_storage

2.3 burst_rw

2.4 critical_path

2.5 custom_datatype

2.6 dataflow_stream

2.7 dataflow_stream_array

2.8 dependence_inter

2.9 gmem_2banks

2.10 kernel_chain

2.11 lmem_2rw

2.12 loop_pipeline

2.13 loop_reorder

2.14 partition_cyclicblock

2.15 plram_access

2.16 port_width_widening

2.17 shift_register

2.18 simple_vadd

2.19 wide_mem_rw

3. 学习规划


1. 示例集合概述

这个 Xilinx Vitis 加速示例集合提供了一系列的 Vitis HLS 教程和示例:Vitis HLS Examples at 2022.1Vitis_Accel_Examples. Contribute to Xilinx/Vitis_Accel_Examples development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/Xilinx/Vitis_Accel_Examples/tree/2022.1/cpp_kernels

如果您是新手,这些示例将帮助您快速上手并理解 Vitis HLS 开发环境和编程模型。对于有经验的开发者来说,这些示例可以作为性能优化和高级功能实现的参考。

2. 内容分析

2.1 array_partition

矩阵乘法(行 x 列),演示如何通过数组分区来实现更好的性能。

2.2 bind_op_storage

向量加法,如何使用BIND OP和STORAGE来获得更好的实现风格。

2.3 burst_rw

AXI4 主接口突发读写。

2.4 critical_path

展示一种普通的编程风格,可能会导致关键路径问题,并降低设计时序。通过更好的编程风格,可以改进设计时序。

2.5 custom_datatype

RGB到HSV转换的例子,用于演示C语言内核中自定义数据类型的使用。在内核操作和内核与全局内存之间的内存接口中使用自定义数据类型。

2.6 dataflow_stream

HLS的数据流允许用户将多个任务调度在一起,以实现更高的吞吐量。

2.7 dataflow_stream_array

多阶段向量加法的简单示例,用于演示HLS C内核代码中流数组的使用。

2.8 dependence_inter

使用 DEPENDENCE 编译指令,指定连续循环迭代中对缓冲区的依赖关系,使得编译器可以进行展开/流水线操作以获得更好的性能。

2.9 gmem_2banks

如何使用多个ddr和在每个DDR中创建缓冲区。

2.10 kernel_chain

级联矩阵乘法,启用了ap_ctrl_chain,以展示如何重叠多次内核调用的排队以获得更高的性能。

2.11 lmem_2rw

如何利用本地内存的两个端口。

2.12 loop_pipeline

演示使用流水线操作。

2.13 loop_reorder

一个简单的矩阵乘法(x )的例子,用于演示如何通过循环重排来获得更好的流水线II因子。

2.14 partition_cyclicblock

使用数组块和循环分区来提高内核的性能。

2.15 plram_access

矩阵乘法,使用PLRAM。

2.16 port_width_widening

如何通过调整内核端口宽度来优化资源利用率而不损失性能

2.17 shift_register

这个例子展示了如何在每个时钟周期中移动寄存器中的值。

2.18 simple_vadd

一个简单的向量加法。

2.19 wide_mem_rw

这是一个简单的向量加法示例,用于演示使用 ap_uint<512> 数据类型进行宽内存访问。基于输入参数类型,V++编译器将计算出全局内存和内核之间的内存数据宽度。对于这个示例,使用了 ap_uint<512> 数据类型,所以内存数据宽度将是16 x (整数位宽) = 16 x 32 = 512 bit

3. 学习规划

"学而时习之,不亦乐乎"就是说,学习并掌握这些优化指令,并通过社交媒体分享它们,岂不是一件令人愉悦的事情吗?掌握这些优化指令不仅能够加深我们对Vitis库的理解,而且对于高效地实现硬件算法也极为有益。我已经单独分享了一些相关内容,当我使用到某个具体的优化指令时,我会详细解释其作用和重要性。


http://www.ppmy.cn/news/1429219.html

相关文章

PTA 6-13 表尾插入法构造链表

本题实现链表的构造&#xff0c;采用表尾插入法构造链表&#xff0c;输出表中所有元素。 函数接口定义&#xff1a; 函数接口&#xff1a; ptr creat( )&#xff1b;//构造链表 void output(ptr p);//输出链表元素其中p 是用户传入的参数。creat函数返回链表的头指针&#xf…

第65天:API攻防-接口安全WebPackRESTSOAPWSDLWebService

目录 思维导图 前置知识 案例一&#xff1a;WebService 类-Wsdl&ReadyAPI-SQL 注入 案例二&#xff1a;SOAP 类-Swagger&SoapUI&EXP-信息泄露 案例三&#xff1a;HTTP 类-WebPack&PackerFuzzer-信息泄露 思维导图 前置知识 RPC接口: 登录游戏时候登录账号…

在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试

CV1811C环境编译 SDK目录结构 . ├── build // 编译目录,存放编译脚本以及各board差异化配置 ├── buildroot-2021.05 // buildroot开源工具 ├── freertos // freertos系统 ├── fsbl // fsbl启动固件,prebuilt形式存在…

如何免费用 Llama 3 70B 帮你做数据分析与可视化?

快速、强悍且免费&#xff0c;你还等啥&#xff1f; Llama 3 的发布&#xff0c;真可谓一石激起千层浪。前两天&#xff0c;许多人还对「闭源模型能力普遍大于开源模型」的论断表示赞同。但是&#xff0c;最新的 LLM 排行榜&#xff08;https://chat.lmsys.org/?leaderboard&a…

Java离线视频提取音频+音频提取文案

需引入依赖javacv、vosk相关依赖&#xff0c; 至于javacv依赖&#xff0c;网上有很多缩减方案&#xff0c;注释部分是可行的缩减方案&#xff0c;至于视频提取视频这里无需安装ffmpeg&#xff0c;只需引入依赖。而vosk需要下载模型方可使用&#xff0c;并且下载比较慢&#xf…

【设计模式】单例模式|最常用的设计模式

写在前面 单例模式是最常用的设计模式之一&#xff0c;虽然简单&#xff0c;但是还是有一些小坑点需要注意。本文介绍单例模式并使用go语言实现一遍单例模式。 单例模式介绍 简介 单例模式保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 使用场景&#…

2024第三届中国力触觉技术及应用会议,将于5月24-26日在天津举办,搜维尔科技与您共探触觉传感器与力触觉感知新技术

大会介绍 2024第三届中国力触觉技术及应用会议”将于2024年5月24-26日在中国天津举办。 本届会议以“感知赋能未来&#xff0c;触觉助力世界”为主题&#xff0c;聚焦力触觉传感器与力触觉感知技术&#xff0c;持续关注行业领域热点&#xff0c;探讨技术前沿&#xff0c;融合多…

【免费源码下载】完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城php+uniapp

简介 完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本&am…