0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis HLS相关问答详解

XILINX开发者社区 来源:XILINX开发者社区 2023-08-11 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在 8 月 3 日举行的针对如何利用 AMD Vitis HLS 提高任务级并行性的网络研讨会中,我们深入探讨了任务级并行性的相关优势和使用方法。本次研讨会中我们收到了来自广大用户和网友的热情提问,针对代表性较强的问题,专家在线进行了集中答疑,研讨会后我们另精选出部分高频问题在本文中做出进一步解答。

1. 所谓多任务,在 C/C++ 代码编写方面是否有新的规则或要求?或是会自动进行多任务的切分?

需要手工在 C++ 代码里明确指定可并行执行的任务(用 task,添加头文件 hls_task.h),同时可并行执行的 task 接口(对应 C++ 函数的形参)必须是 stream 或 stream_of_blocks。

2. 数据驱动型设计要求反馈指的是什么呢?可以举个例子吗?

数据驱动型支持反馈不是要求反馈,例如:funcA 输出给 funcB, funcB 输出给 funcC,funcC 的有一个输出给到 funcA 构成反馈支路。简单地说,数据流向不是单一向前的。

3. 具体代码应用中怎么快速识别出那两种并行任务的区别在哪里?

要从数据流的角度考虑,例如,数据流单一流动且后续用到的数据依赖于之前函数的输出,这种情况下是控制驱动型。funcA -> funcB -> funcC -> funD

如果数据流形成分支,但仍有依赖关系,比如 funcA -> funcB1,同时 funcA -> funcB2,那么 funcB1 和 funcB2 就是并行执行的两个任务,这就是数据驱动型。

4. 我们在使用 C/C++ 描述算法时,只需关注算法本身就可以了,但是 FPGA 好像不是这样,比如 C/C++ 没有时序的概念, HLS 如何解决这个问题?

HLS 工作原理主要有两大内容:Schedule,这个过程是提取状态控制的过程,判断什么时候执行什么操作;Binding,这个过程是指定这些操作用 FPGA 内的什么资源来实现。前者管理时序,后者管理资源。

5. 请问在直播讲解的示例中,Data_TLP 为什么能带来这么大的性能提升?示例中任务不是多么复杂,为什么 DATAFLOW 的延迟和 II 会那么高?

因为 DATA_TLP 是多个任务并行执行,而 DATAFLOW 尽管相比于原始已经有了并行性,但是一种流水的方式,所以延迟和II 都会比纯粹的并行多任务要大。

6. Stream 如果是 fifo,可以通过 pragma 指定深度吗?

可以不用 pragma 指定,在定义 stream 时就可以指定,例如:hls_stream,当然也可以通过 pragma STREAM 指定。

7. HLS 是否对硬件有特殊要求?

使用 Vitis HLS,只要芯片型号是 AMD Xilinx 7 系列 FPGA 到 Versal Adaptive SoC 芯片就可以。

8. Task 这个语法,在 2023 之前的版本里支持吗?

从 Vitis HLS 2022.2 版本开始支持。

9. HLS 能编写成一个 IP,用于流片吗?

这个需要先了解 HLS 的本质:它是把高层次语言比如 C++/C 描述的算法转换成传统的硬件语言,最终在 FPGA 上实现。采用 AMD Vitis HLS 时,选择的目标芯片只能是 AMD 的 FPGA。但从广义上来讲,如果生成的 RTL 代码不受具体 FPGA 芯片型号的限制,可以封装成 IP 使用,但到流片还有很大一段距离。

10. 请问 HLS 在做协议组帧方面,与 Verilog 相比是否更有优势?

HLS 在复杂算法方面的实现上更有优势,像这种协议组帧更适合用 HDL 比如 Verilog 或 VHDL 描述。

11. HLS 设计的验证如何保证充分性?

这个要从 C++ 测试平台的代码覆盖率角度考虑,要专门的工具来测试代码覆盖率,所以要保证验证的重复性就要保证代码覆盖率为 100%。

12. 要用好 HLS 有没有学习 Verilog 的必要?

如果你是软件工程师,没有 FPGA 背景知识,那么学习 HLS 需要先了解一下 FPGA 的内部结构和工作机制,没有多大必要专门学习 Verilog。

13. 如何对 HLS 工程进行时钟频率的提升优化?

首先,要从算法本身考虑,结合数据流进行算法分割。此外还有两个方面要考虑:一是代码风格,尽可能保证 C++ 代码风格遵循 HLS 的规范,二是如何使用 pragma,通过 pragma 来改善性能。

14. HLS 的线性代数库被移除后,还有什么库函数可以方便地实现矩阵乘法吗?

HLS 线性代数库并没有被移除,而是统一放到了 Vitis Library 里了。

这里既有矩阵乘也有矩阵分解。

15. HLS 封装的 IP 能像 Verilog 那样做参数化选择吗?

所谓 HLS 封装 IP 是指 Vitis HLS 把最终生成的 RTL 代码封装为 IP 供 Vivado 使用,这时已经完成了 C/C++ 到 RTL 代码的转换,所以封装的 IP 是无法参数化的。

16. 本来模块单独没有时序问题,加上 DATAFLOW 后时序问题就出现了,而且定位不到问题点,DATAFLOW 是否会影响时序?

DATAFLOW 会增加 Memory 的开销,也就增加了资源利用率,间接影响时序。但你要先具体看一下时序问题出现在哪里。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5647

    浏览量

    139029
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114144
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66843
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76714
  • Vitis
    +关注

    关注

    0

    文章

    154

    浏览量

    8264

原文标题:Vitis HLS 研讨会精彩回放及问答详解

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用AMD Vitis HLS创建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数据写回存储器。接着会在 AMD Vivado Design Suite 设计中使用此
    的头像 发表于 06-13 09:50 1286次阅读
    如何使用AMD <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>创建<b class='flag-5'>HLS</b> IP

    使用AMD Vitis Unified IDE创建HLS组件

    这篇文章在开发者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 传统 IDE) 的基础上撰写,但使用的是 AMD Vitis Unifie
    的头像 发表于 06-20 10:06 1928次阅读
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE创建<b class='flag-5'>HLS</b>组件

    FPGA高层次综合HLSVitis HLS知识库简析

    ,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到Vitis里了,集成之后增加了一些功能,同时将这部分开源出来了。
    发表于 09-07 15:21

    使用Vitis HLS创建属于自己的IP相关资料分享

    1、使用Vitis HLS创建属于自己的IP高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。对于AMD
    发表于 09-09 16:45

    Vivado HLSVitis HLS 两者之间有什么区别

    Vitis HLS下,一个Solution的Flow Target可以是Vivado IP Flow Target,也可以是VitisKernel Flow Target,如下图所示。前者最终导出来
    的头像 发表于 11-05 17:43 4.1w次阅读

    基于Vitis HLS的加速图像处理

    使用Vivado / Vitis工具提供预安装的OpenCV版本。尽管Vitis_hls编译Vision库不需要OpenCV,但是用户测试验证使用时OpenCV。
    的头像 发表于 02-16 16:21 3169次阅读
    基于<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>的加速图像处理

    Vitis HLS工具简介及设计流程

    Vitis HLS 是一种高层次综合工具,支持将 C、C++ 和 OpenCL 函数硬连线到器件逻辑互连结构和 RAM/DSP 块上。Vitis HLS 可在
    的头像 发表于 05-25 09:43 3368次阅读

    Vitis HLS如何添加HLS导出的.xo文件

    HLS导出的.xo文件如何导入到Vitis里面?需要把.xo文件解压,然后把文件夹导入到Vitis Kernel/src文件夹下吗?
    的头像 发表于 08-03 11:20 3871次阅读
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>如何添加<b class='flag-5'>HLS</b>导出的.xo文件

    Vitis HLS前端现已全面开源

    Vitis HLS 工具能够将 C++ 和 OpenCL 功能部署到器件的逻辑结构和 RAM/DSP 块上。在 GitHub 上提供 Vitis HLS 前端为研究人员、开发人员和编译
    的头像 发表于 08-03 09:53 1548次阅读

    Vitis HLS知识库总结

    对于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到Vitis里了,集成之后增加了一些功能,同时将这部分开
    的头像 发表于 09-02 09:06 4511次阅读

    理解Vitis HLS默认行为

    相比于VivadoHLS,Vitis HLS更加智能化,这体现在Vitis HLS可以自动探测C/C++代码中可并行执行地部分而无需人工干预添加pragma。另一方面VitisHLS也
    的头像 发表于 11-24 11:42 2340次阅读

    AMD全新Vitis HLS资源现已推出

    AMD Vitis HLS 工具允许用户通过将 C/C++ 函数综合成 RTL,轻松创建复杂的 FPGA 算法。Vitis HLS 工具与 Vivado Design Suite(用于
    的头像 发表于 04-23 10:41 1668次阅读
    AMD全新<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>资源现已推出

    如何在Vitis HLS GUI中使用库函数?

    VitisHLS 2023.1 支持新的 L1 库向导,本文将讲解如何下载 L1 库、查看所有可用功能以及如何在 Vitis HLS GUI 中使用库函数。
    的头像 发表于 08-16 10:26 2037次阅读
    如何在<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> GUI中使用库函数?

    Vitis HLS:使用任务级并行性的高性能设计

    电子发烧友网站提供《Vitis HLS:使用任务级并行性的高性能设计.pdf》资料免费下载
    发表于 09-13 17:21 1次下载
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>:使用任务级并行性的高性能设计

    Vitis HLS移植指南

    电子发烧友网站提供《Vitis HLS移植指南.pdf》资料免费下载
    发表于 09-13 09:21 0次下载
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>移植指南