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。
  • 分配能帮助实现一个延迟和面积直接的权衡。
  • 数据流优化是提高设计吞吐量的一种强大方法。
目录
相关文章
|
供应链 安全 搜索推荐
大模型加速零售业重构
【1月更文挑战第19天】大模型加速零售业重构
412 2
大模型加速零售业重构
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
863 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
C++ 芯片 异构计算
【ZYNQ】教你用 Vivado HLS 快速设计一个 IP
【ZYNQ】教你用 Vivado HLS 快速设计一个 IP
438 0
|
Ubuntu Python
全网最简约的Vscode配置Anaconda环境(百分百成功)
全网最简约的Vscode配置Anaconda环境(百分百成功)
31315 0
全网最简约的Vscode配置Anaconda环境(百分百成功)
|
Serverless 调度 C语言
HLS-指令使用指南(一)
HLS-指令使用指南
1690 1
HLS-指令使用指南(一)
|
Linux 开发工具 异构计算
【ZYNQ】QSPI Flash 固化程序全攻略
【ZYNQ】QSPI Flash 固化程序全攻略
3693 0
|
并行计算 算法 异构计算
基于FPGA的图像拼接算法实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像拼接算法实现,包括tb测试文件和MATLAB辅助验证
|
存储 算法 计算机视觉
维特比解码(Viterbi Decoding
维特比解码(Viterbi Decoding)是一种用于解码卷积编码(Convolutional Coding)的算法,由 Andrew Viterbi 在 1968 年提出。卷积编码是一种前向纠错编码技术,用于提高数据传输的可靠性。在卷积编码中,数据被组织成一定大小的块,并用一个纠错码附加到数据块中。在接收端,维特比解码算法根据接收到的编码数据,通过比较不同可能的解码路径的权重,来找到最有可能的解码路径,从而实现对数据的解码。
809 4
|
异构计算
HLS开发学习-13- 数组优化
HLS开发学习-13- 数组优化
702 0
HLS开发学习-13- 数组优化
HLS开发学习-15- HLS优化指令汇总
HLS开发学习-15- HLS优化指令汇总
496 0
HLS开发学习-15- HLS优化指令汇总