HLS开发学习-14- Vivado HLS 函数层面的优化

简介: HLS开发学习-14- Vivado HLS 函数层面的优化

写在前面


本文是本系列专题的第十四篇,参考高亚军老师的视频教程以及课程的ppt,主要介绍了Vivado HLS 函数层面的优化。

代码风格


编码风格对函数的主要影响在于函数参数和接口。如果函数的参数是明确的,Vivado HLS可以通过使用HLS库中的精度的类型进行定义数据类型。没有必要为每个变量创建任意的精度类型。

下面的示例是默认状态和使用ap_int的两种情况的对比。从结果中可知,使用ap_int更节约资源。

image.png

内联(inline)


函数内联删除了函数层次结构。函数可以使用INLINE指令进行内联。内联函数可以改进区域,允许函数中的组件与调用函数中的逻辑更好地共享或优化。HLS可能会自动内联小的函数,以提高结果质量(QoR)。你可以通过向任何自动内联的函数添加带有off选项的内联指令来防止这种情况。

从下面这个例子中可以看出,如果只是把inline简单关闭的话,延迟会增大,资源使用也会变多。

image.png

分配(allocation)


他为资源分配指定实例限制。它定义并限制用于实现特定功能或操作的RTL实例的数量。简单来说就是同样的一份电路,在RTL级中被调用的次数进行规划。

image.png

使用allocation,在默认情况,limit = 1,limit = 2 的对比。可得出,在limit = 2 时延时最小,同时用到的资源也是最多的。

image.png

任务级流水线:DATAFLOW


之前DATAFLOW只是应用于函数内部,这里将DATAFLOW应用于函数之间。

image.png

DATAFLOW的优化方法可以将一系列的串行任务进行优化,这里的任务可以是函数,可以是循环,或者两种都有。使用这一系列顺序任务,DATAFLOW优化创建了一个并行流程架构。上图所示的通道确保任务不需要等待前一个任务完成所有操作后才能开始。所以DATAFLOW允许任务之间有交叠,也就是并行化处理,这种方法提高了数据的吞吐量,减少了延迟。

下面这个例子。在不使用dataflow的处理指令,执行周期是8,而进行优化过后,执行周期变成了5。

image.png

使用示例:

image.png

小结


  • 任意精度类型可以帮助缩小面积。
  • 函数内联可以提高QoR。
  • 分配能帮助实现一个延迟和面积直接的权衡。
  • 数据流优化是提高设计吞吐量的一种强大方法。
目录
相关文章
|
运维 监控 Java
nacos常见问题之获取配置文件的时候报错user not found如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
2538 2
|
C++ 芯片 异构计算
【ZYNQ】教你用 Vivado HLS 快速设计一个 IP
【ZYNQ】教你用 Vivado HLS 快速设计一个 IP
351 0
|
Ubuntu Python
全网最简约的Vscode配置Anaconda环境(百分百成功)
全网最简约的Vscode配置Anaconda环境(百分百成功)
29244 0
全网最简约的Vscode配置Anaconda环境(百分百成功)
|
Serverless 调度 C语言
HLS-指令使用指南(一)
HLS-指令使用指南
1611 1
HLS-指令使用指南(一)
|
Linux 开发工具 异构计算
【ZYNQ】QSPI Flash 固化程序全攻略
【ZYNQ】QSPI Flash 固化程序全攻略
3252 0
|
存储 算法 计算机视觉
维特比解码(Viterbi Decoding
维特比解码(Viterbi Decoding)是一种用于解码卷积编码(Convolutional Coding)的算法,由 Andrew Viterbi 在 1968 年提出。卷积编码是一种前向纠错编码技术,用于提高数据传输的可靠性。在卷积编码中,数据被组织成一定大小的块,并用一个纠错码附加到数据块中。在接收端,维特比解码算法根据接收到的编码数据,通过比较不同可能的解码路径的权重,来找到最有可能的解码路径,从而实现对数据的解码。
733 4
|
异构计算
HLS开发学习-13- 数组优化
HLS开发学习-13- 数组优化
656 0
HLS开发学习-13- 数组优化
HLS实践 - 03 - 接口优化设计(一)
HLS实践 - 03 - 接口优化设计
456 0
HLS实践 - 03 - 接口优化设计(一)
|
算法 编译器 调度
HLS-指令使用指南(三)
HLS-指令使用指南
2617 0
HLS-指令使用指南(三)
|
芯片 内存技术
ZYNQ裸板:DDR篇
DDR是zynq的内存又可以叫做主存。是CPU能直接寻址的存储空间,没有DDR的话,运行内存只有很小的内部RAM,软件大小受限,也几乎没法跑操作系统。作为下一篇AXIDMA的基础知识提前做个准备,内容很简单这里就简单做一个读写测试,也可以当做验证下DDR是否都可以正常访问
937 0
ZYNQ裸板:DDR篇